/* eslint-disable func-style */
/* eslint-disable max-len */
/* eslint-disable require-jsdoc */
function addBlocks (Blockly) {
    const color = '#42CCFF';
    const color_screen = '#a5855b';
    const color_c02_serson = '#27b6ac';
    const QH_Actuator_color = '#AE8F00';
    const QH_SPEECH_color1 = '#ae8f00';
    const QH_SPEECH_color2 = '#5ba5a5';
    const QH_SPEECH_color3 = '#a5675b';
    const QH_SPEECH_color4 = '#e386a1';
    const QH_COMMUNICATE_color1 = '#6c91ac';
    const QH_COMMUNICATE_color2 = '#27b6ac';
    const QH_COMMUNICATE_color3 = '#5b5b5b';
    const QH_COMMUNICATE_color4 = '#00a6ac';
    const QH_MP3_color = '#b766ad';
    const QH_SMG_COLOR = '#ae8f00';
    const QH_OLED_COLOR = '#e36a69';
    const QH_SDISPLAY_COLOR = '#a5855b';
    const QH_LCD_COLOR = '#5ba5a5';
    const QH_ZKP_COLOR = '#6495ed';
    const QH_OTHER_COLOR = '#808080';
    const QH_STORAGE_COLOR  = '#808080';
    const QH_WIFI_COLOR  = '#7b68ee';
    const QH_WEB_COLOR = '#7b68ee';
    const QH_DATABASE_COLOR = '#5b67a5'

    const xxqrIconUrl = '';

    const QH_SDISPLAY_ICO = "";


    const QH_C02_TOUCH_ICO = ''

    const QH_Button_ICO ='';

    const QH_Line_follower_ICO = '';

    const QH_lightSensor_ICO = "";

    const QH_sound_ICO = "";

    const QH_Potentiometer_ICO = "";

    const QH_joystick_ICO = "";

  const QH_Soilmoisture_ICO = "";

  const QH_dht11_ICO = "";

  const QH_yssb_ICO = "";

  const QH_MPU6050_ICO = "";

  const QH_RTC_ICO = '';

  const QH_LED_ICO = "";

  const QH_RELAY_ICO = "";

  const QH_RGB_ICO = "";

  const QH_BUZZER_ICO = "";

  const QH_MOTOR_ICO = "";

  const QH_SPEECH_ICO = "";

  const QH_MICROPHONE_ICO = "";

  const QH_REMOTE_ICO = "";

  const QH_BLUETOOTH_ICO = "";

  const QH_SERIAL_ICO = "";

  const QH_MP3_ICO = "";

  const QH_SMG_ICO = "";

  const QH_OLED_ICO = "";

  const QH_ANGRY_ICO = "";

  const QH_AWAKE_ICO = "";

  const QH_BLACK_EYE_ICO = "";

  const QH_BOTTOM_LEFT_ICO = "";

  const QH_BOTTOM_RIGHT_ICO = "";

  const QH_CRAZY1_ICO = "";

  const QH_CRAZY2_ICO = "";

  const QH_DISAPPOINTED_ICO = "";

  const QH_DIZZY_ICO = "";

  const QH_DOWN_ICO = "";

  const QH_EVIL_ICO = "";

  const QH_HURT_ICO = "";

  const QH_KNOCKED_OUT_ICO = "";

  const QH_LOVE_ICO = "";

  const QH_Middle_LEFT_ICO = "";

  const QH_Middle_RIGHT_ICO = "";

  const QH_NEUTRAL_ICO = "";

  const QH_NUCLEAR_ICO = "";

  const QH_PINCH_LEFT_ICO = "";

  const QH_PINCH_MIDDLE_ICO = "";

  const QH_PINCH_RIGHT_ICO = "";

  const QH_TEAR_ICO = "";

  const QH_TIRED_LEFT_ICO = "";

  const QH_TIRED_MIDDLE_ICO = "";

  const QH_TIRED_RIGHT_ICO = "";

  const QH_TOXIC_ICO = "";

  const QH_UP_ICO = "";

  const QH_WINKING_ICO = "";

  const QH_LCD_ICO = "";

  const QH_ZKP_ICO = "";

  const QH_STORAGE_ICO = '';

   const QH_WIFI_ICO = '';

   const QH_SMARTCONFIG_ICO = ''

   const QH_WEATHER_ICO = '';

   const QH_WEB_ICO = '';

   const QH_DATABASE_ICO = '';

   const QH_TIMER_ICO = '';

   const QH_PS2_ICO = '';


    var qdprobotESP32_BOTH_PIN_Display_Dropdown = [
    ['.P0-32-33（Display）','0'],
    ['P3-21-22（IIC）','3'],
    ['P4-16-17（RGB）','4'],
    ['P5-18-5','5'],
    ['P6-23-19','6'],
    ['P7-15-2（touch)','7'],
    ['P8-27-14（touch）','8'],
    ['P9-12-13（touch）','9'],
    ['P10-25-26','10']
    ];
    var qdprobotESP32_display_samll_btl=[["9600", "9600"],
    ["115200", "115200"],
    ["19200", "19200"],
    ["5600", "5600"]];
    var Esp32_HardWareSerial_Dropdown = [['Serial_1','1'],
    ['Serial_2','2']];
    var qdprobotESP32_Touch_PIN_Input_Dropdown = [
    ['.P9-L-12（touch）','T5'],
    ['.P9-R-13（touch）','T4'],
    ['.P8-R-14（touch）','T6'],
    ['.P7-L-15（touch）','T3'],
    ['.P8-L-27（touch）','T7'],
    ['.P7-R-2（touch）','T2']
    ];
    var qdprobotESP32_LR_PIN_Input_Dropdown = [
    ['.P1-L-36','P1L'],
    ['.P1-R-39','P1R'],
    ['.P2-L-34','P2L'],
    ['.P2-R-35','P2R'],
    ['.P3-L-21（SDA）','P3L'],
    ['.P3-R-22（SCL）','P3L'],
    ['.P4-L-16','P4L'],
    ['.P4-R-17（RGB）','P4R'],
    ['.P5-L-18','P5L'],
    ['.P5-R-5','P5R'],
    ['.P6-L-23','P6L'],
    ['.P6-R-19','P6R'],
    ['.P7-L-15（touch）','P7L'],
    ['.P7-R-2','P7R'],
    ['.P8-L-27（touch）','P8L'],
    ['.P8-R-14（touch）','P8R'],
    ['.P9-L-12（touch）','P9L'],
    ['.P9-R-13（touch）','P9R'],
    ['.P10-L-25','P10L'],
    ['.P10-R-26','P10R']
    ];
    var qdprobotESP32_BOTH_PIN_Input_Dropdown = [
    ['.P1-36-39','1'],
    ['.P2-34-35','2'],
    ['.P3-21-22（IIC）','3'],
    ['.P4-16-17（RGB）','4'],
    ['.P5-18-5','5'],
    ['.P6-23-19','6'],
    ['.P7-15-2（touch)','7'],
    ['.P8-27-14（touch）','8'],
    ['.P9-12-13（touch）','9'],
    ['.P10-25-26','10']
    ];
    var qdprobotESP32_BOTH_PIN_Output_Dropdown = [
    ['.P3-21-22（IIC）','3'],
    ['.P4-16-17（RGB）','4'],
    ['.P5-18-5','5'],
    ['.P6-23-19','6'],
    ['.P7-15-2（touch)','7'],
    ['.P8-27-14（touch）','8'],
    ['.P9-12-13（touch）','9'],
    ['.P10-25-26','10']
    ];
    var qdprobotESP32_UNIT=[["cm", "Cm"],
    ["inch", "inch"]];
    var qdprobotESP32_L2_PIN_Input_Dropdown = [
    ['.P1-L-36','P1L'],
    ['.P2-L-34','P2L'],
    ['.P7-L-15（touch）','P7L'],
    ['.P8-L-27（touch）','P8L'],
    ['.P9-L-12（touch）','P9L'],
    ['.P10-L-25','P10L'],
    ['P1-R-39','P1R'],
    ['P2-R-35','P2R'],
    ['P7-R-2','P7R'],
    ['P8-R-14（touch）','P8R'],
    ['P9-R-13（touch）','P9R'],
    ['P10-R-26','P10R']
    ];
    var qdprobotESP32_R2_PIN_Input_Dropdown = [
    ['.P1-R-39','P1R'],
    ['.P2-R-35','P2R'],
    ['.P7-R-2','P7R'],
    ['.P8-R-14（touch）','P8R'],
    ['.P9-R-13（touch）','P9R'],
    ['.P10-R-26','P10R'],
    ['P1-L-36','P1L'],
    ['P2-L-34','P2L'],
    ['P7-L-15（touch）','P7L'],
    ['P8-L-27（touch）','P8L'],
    ['P9-L-12（touch）','P9L'],
    ['P10-L-25','P10L']
    ];
    var qdprobotESP32_LR2_PIN_Input_Dropdown = [
    ['.P1-L-36','P1L'],
    ['.P1-R-39','P1R'],
    ['.P2-L-34','P2L'],
    ['.P2-R-35','P2R'],
    ['.P7-L-15（touch）','P7L'],
    ['.P7-R-2','P7R'],
    ['.P8-L-27（touch）','P8L'],
    ['.P8-R-14（touch）','P8R'],
    ['.P9-L-12（touch）','P9L'],
    ['.P9-R-13（touch）','P9R'],
    ['.P10-L-25','P10L'],
    ['.P10-R-26','P10R']
    ];
    var qdprobotESP32_LR_PIN_Output_Dropdown = [
    ['.P3-L-21（SDA）','P3L'],
    ['.P3-R-22（SCL）','P3R'],
    ['.P4-L-16','P4L'],
    ['.P4-R-17（RGB）','P4R'],
    ['.P5-L-18','P5L'],
    ['.P5-R-5','P5R'],
    ['.P6-L-23','P6L'],
    ['.P6-R-19','P6R'],
    ['.P7-L-15（touch）','P7L'],
    ['.P7-R-2','P7R'],
    ['.P8-L-27（touch）','P8L'],
    ['.P8-R-14（touch）','P8R'],
    ['.P9-L-12（touch）','P9L'],
    ['.P9-R-13（touch）','P9R'],
    ['.P10-L-25','P10L'],
    ['.P10-R-26','P10R']
    ];
    var qdprobotESP32_L_PIN_Output_Dropdown = [
    ['.P3-L-21（SDA）','P3L'],
    ['.P4-L-16','P4L'],
    ['.P5-L-18','P5L'],
    ['.P6-L-23','P6L'],
    ['.P7-L-15（touch）','P7L'],
    ['.P8-L-27（touch）','P8L'],
    ['.P9-L-12（touch）','P9L'],
    ['.P10-L-25','P10L'],
    ['P1-R-39','P1R'],
    ['P2-R-35','P2R'],
    ['P3-R-22（SCL）','P3R'],
    ['P4-R-17（RGB）','P4R'],
    ['P5-R-5','P5R'],
    ['P6-R-19','P6R'],
    ['P7-R-2','P7R'],
    ['P8-R-14（touch）','P8R'],
    ['P9-R-13（touch）','P9R'],
    ['P10-R-26','P10R']
    ];
    var QDPTONE_NOTES=[["NOTE_C3", "131"],
    ["NOTE_D3", "147"],
    ["NOTE_E3", "165"],
    ["NOTE_F3", "175"],
    ["NOTE_G3", "196"],
    ["NOTE_A3", "220"],
    ["NOTE_B3", "247"],
    ["NOTE_C4", "262"],
    ["NOTE_D4", "294"],
    ["NOTE_E4", "330"],
    ["NOTE_F4", "349"],
    ["NOTE_G4", "392"],
    ["NOTE_A4", "440"],
    ["NOTE_B4", "494"],
    ["NOTE_C5", "532"],
    ["NOTE_D5", "587"],
    ["NOTE_E5", "659"],
    ["NOTE_F5", "698"],
    ["NOTE_G5", "784"],
    ["NOTE_A5", "880"],
    ["NOTE_B5", "988"]];
    var qdprobotESP32_Esp32_CHANNEL=[["0", "0"],
    ["1", "1"],
    ["2", "2"],
    ["3", "3"],
    ["4", "4"],
    ["5", "5"],
    ["6", "6"],
    ["7", "7"],
    ["8", "8"],
    ["9", "9"],
    ["10", "10"],
    ["11", "11"],
    ["12", "12"],
    ["13", "13"],
    ["14", "14"],
    ["15", "15"]];
    var qdprobotESP32_Buzzer_PIN_Output_Dropdown = [
    ['.4（Buzzer）','4'],
    ['.P4-L-16','P4L'],
    ['.P5-L-18','P5L'],
    ['.P6-L-23','P6L'],
    ['.P7-L-15（touch）','P7L'],
    ['.P8-L-27（touch）','P8L'],
    ['.P9-L-12（touch）','P9L'],
    ['.P10-L-25','P10L'],
    ['P4-R-17（RGB）','P4R'],
    ['P5-R-5','P5R'],
    ['P6-R-19','P6R'],
    ['P7-R-2','P7R'],
    ['P8-R-14（touch）','P8R'],
    ['P9-R-13（touch）','P9R'],
    ['P10-R-26','P10R']
    ];
    var QDPTONE_TONE_MUSIC=[["music1", "1"],
    ["music2", "2"],
    ["music3", "3"],
    ["music4", "4"],
    ["music5", "5"],
    ["music6", "6"],
    ["music7", "7"],
    ["music8", "8"],
    ["music9", "9"],
    ["music10", "10"],];
    var qdprobotESP32_MotorNum=[["M1", "1"],
    ["M2", "2"],
    ["M3", "3"],
    ["M4", "4"]];
    const QDP_ASR_keyword_dropdown2 =[
    ["唤醒","starton"],
    ["退出识别","startoff"],
    ["静音模式","soundoff"],
    ["回应模式","soundon"],
    ["打开设备/打开1号/开始1号","openequipment"],
    ["关闭设备/关闭1号/停止1号","closeequipment"],
    ["开灯/把灯打开/打开2号/开始2号","turnon2"],
    ["关闭2号/停止2号/关灯/关闭灯光","turnoff2"],
    ["打开3号/开启3号/开始3号","turnon3"],
    ["关闭3号/停止3号","turnoff3"],
    ["打开4号/开始4号","turnon4"],
    ["关闭4号/停止4号","turnoff4"],
    ["打开5号/开始5号","turnon5"],
    ["关闭5号/停止5号","turnoff5"],
    ["打开6号/开始6号","turnon6"],
    ["关闭6号/停止6号","turnoff6"]
    ];
    const QH_ASR_keyword_dropdown =[
    ["退下/再见","ExitUni"],
    ["静音模式","soundoff"],
    ["回应模式","soundon"],
    ["打开设备/打开1号/开始1号","openequipment"],
    ["关闭设备/关闭1号/停止1号","closeequipment"],
    ["开灯/把灯打开/打开2号/开始2号","turnon2"],
    ["关闭2号/停止2号/关灯/关闭灯光","turnoff2"],
    ["打开3号/开启3号/开始3号","turnon3"],
    ["关闭3号/停止3号","turnoff3"],
    ["打开4号/开始4号","turnon4"],
    ["关闭4号/停止4号","turnoff4"],
    ["打开5号/开始5号","turnon5"],
    ["关闭5号/停止5号","turnoff5"],
    ["打开6号/开始6号","turnon6"],
    ["关闭6号/停止6号","turnoff6"],
    ["现在温度/今天温度","temperaturenow"],
    ["现在湿度/显示湿度","humiditynow"],
    ["你叫什么名字","myname"],
    ["左转/左转弯","leftturn"],
    ["右转/右转弯","rightturn"],
    ["前进/直行/进攻/出发","goforward"],
    ["后退/倒退/倒车","drawback"],
    ["停止/停了","stoprun"],
    ["打转/转圈","turnaround"],
    ["抬左手/举起左手","raisedlefthand"],
    ["抬右手/举起右手","raisedrighthand"],
    ["抬左脚/举起左脚","leftfoot"],
    ["抬右脚/举起右脚","rightfoot"],
    ["打开风扇","openElectricfan"],
    ["关闭风扇","closElectricfan"],
    ["风扇调到1档/风速调到最小","AdjustGearmin"],
    ["风扇调到3档/风速调到最大","AdjustGearmax"],
    ["定时一小时关灯","settiCLonehonor"],
    ["定时一小时开灯","settiOPonehonor"],
    ["打开空调","openairconditioner"],
    ["关闭空调","closeairconditioner"],
    ["自动模式","runautomatically"],
    ["制冷模式","coolingmode"],
    ["制热模式","heatingmode"],
    ["升高温度","raisetemperature"],
    ["降低温度","reducetemperature"],
    ["打开电视","turnontv"],
    ["关闭电视","turnofftv"],
    ["调到最亮","setmaxld"],
    ["调到最暗","setminld"],
    ["亮一点/增加亮度","increasebrightness"],
    ["调暗一点/减小亮度","reducebrightness"],
    ["灯调为红色/红色","setcolorred"],
    ["打开电源","turnonpower"],
    ["关闭电源","turnoffpower"],
    ["打开暖气","theheater"],
    ["关闭暖气","shutdownheat"],
    ["打开吹风","openblowing"],
    ["关闭吹风","closeblowing"],
    ["开始出水","thewater"],
    ["停止出水","closewater"],
    ["保温模式","heatpreservationmode"],
    ["打开开关","turnonswitch"],
    ["关闭开关","turnoffswitch"],
    ["温度设置为25度","tempSet25"],
    ["垃圾分类","garbageclassification"],
    ["干垃圾","drygarbage"],
    ["湿垃圾","wetgarbage"],
    ["玻璃","thisglass"],
    ["厨卫垃圾","hutchdefends"],
    ["废纸","wastepaper"],
    ["电池","thebattery"],
    ["塑料","theplastic"],
    ["金属","themetal"],
    ["打开客厅灯","turnonlivingroomlight"],
    ["关闭客厅灯","turnofflivingroomlight"],
    ["打开房间灯","turnonroomlight"],
    ["关闭房间灯","turnoffroomlight"],
    ["打开主卧灯","masterbedroomlight"],
    ["关闭主卧灯","offmasterbedroomlight"],
    ["打开阳台灯","turnonbalconylight"],
    ["关闭阳台灯","turnoffbalconylight"]
    ];

    var qdprobotESP32_L_PIN_Input_Dropdown = [
    ['.P1-L-36','P1L'],
    ['.P2-L-34','P2L'],
    ['.P3-L-21（SDA）','P3L'],
    ['.P4-L-16','P4L'],
    ['.P5-L-18','P5L'],
    ['.P6-L-23','P6L'],
    ['.P7-L-15（touch）','P7L'],
    ['.P8-L-27（touch）','P8L'],
    ['.P9-L-12（touch）','P9L'],
    ['.P10-L-25','P10L'],
    ['P1-R-39','P1R'],
    ['P2-R-35','P2R'],
    ['P3-R-22（SCL）','P3R'],
    ['P4-R-17（RGB）','P4R'],
    ['P5-R-5','P5R'],
    ['P6-R-19','P6R'],
    ['P7-R-2','P7R'],
    ['P8-R-14（touch）','P8R'],
    ['P9-R-13（touch）','P9R'],
    ['P10-R-26','P10R']
    ];

    var qdprobotESP32_R_PIN_Output_Dropdown = [
    ['.P3-R-22（SCL）','P3R'],
    ['.P4-R-17（RGB）','P4R'],
    ['.P5-R-5','P5R'],
    ['.P6-R-19','P6R'],
    ['.P7-R-2','P7R'],
    ['.P8-R-14（touch）','P8R'],
    ['.P9-R-13（touch）','P9R'],
    ['.P10-R-26','P10R'],
    ['P3-L-21（SDA）','P3L'],
    ['P4-L-16','P4L'],
    ['P5-L-18','P5L'],
    ['P6-L-23','P6L'],
    ['P7-L-15（touch）','P7L'],
    ['P8-L-27（touch）','P8L'],
    ['P9-L-12（touch）','P9L'],
    ['P10-L-25','P10L']
    ];

    const QH_yssb_delay = [["700", "700"],["2.4", "2_4"],["24", "24"],["50", "50"],["101", "101"],["154", "154"]];
    const QH_yssb_gain = [["1", "1"],["4", "4"],["16", "16"],["60", "60"]];

    var qdprobotESP32_BOTH_PIN_OLEDOutput_Dropdown = [
    ['.P3-21-22（IIC）','3'],
    ['.P4-16-17（RGB）','4'],
    ['.P5-18-5','5'],
    ['.P6-23-19','6'],
    ['.P7-15-2（touch)','7'],
    ['.P8-27-14（touch）','8'],
    ['.P10-25-26','10']
    ];

    var EN_FONT_NAME = [
    ["Times New Roman", "tim"],
    ["Helvetica", "helv"],
    ["ncen", "ncen"],
    ["courier new", "cour"]
    ];

    var EN_FONT_SIZE = [
    ["08", "08"],
    ["10", "10"],
    ["12", "12"],
    ["14", "14"],
    ["18", "18"],
    ["24", "24"],
    ];

    var EN_FONT_STYLE = [
    ["常规", "R"],
    ["加粗", "B"]
    ];

    var CN_FONT_SIZE = [
    ["12", "wqy12"],
    ["13", "wqy13"],
    ["14", "wqy14"],
    ["15", "wqy15"],
    ["16", "wqy16"],
    ];

    var QDP_Preferences_DATA_TYPE_Dropdown = [['Char','Char'],
    ['UChar','UChar'],
    ['Short','Short'],
    ['UShort','UShort'],
    ['Int','Int'],
    ['UInt','UInt'],
    ['Long','Long'],
    ['ULong','ULong'],
    ['Long64','Long64'],
    ['ULong64','ULong64'],
    ['Float','Float'],
    ['Double','Double'],
    ['Bool','Bool'],
    ['String','String'],
    ['Bytes','Bytes']];

    esp32_digital_pin = [["0", "0"], ["2", "2"], ["4", "4"], ["5", "5"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"], ["16", "16"], ["17", "17"], ["18", "18"], ["19", "19"], ["20", "20"], ["21", "21"], ["22", "22"], ["23", "23"], ["25", "25"], ["26", "26"], ["27", "27"], ["32", "32"], ["33", "33"], ["34", "34"], ["35", "35"], ["36", "36"], ["39", "39"]];


    Blockly.Blocks.QDP_blink_32 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_blink_32,
                args0: [
                    {
                        type: 'field_image',
                        src: xxqrIconUrl,
                        width: 120,
                        height: 120
                    }
                ],
                colour: '#00cccc',
                extensions: ['shape_statement']
            });
        }
    };

    Blockly.Blocks.QDP_esp32_display_samll_init = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options:qdprobotESP32_BOTH_PIN_Display_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'btl',
                        options:qdprobotESP32_display_samll_btl
                    }                    
                ],
                "tooltip": "屏坐标:X最大160，Y最大130",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //彩屏刷新显示
    Blockly.Blocks.QDP_esp32_display_samll_refresh_display = {
        init: function() {
            this.jsonInit({
              message0: Blockly.Msg.QDP_esp32_display_samll_refresh_display,
              message1: "%1", // Statement
              args0: [
                {
                    type: 'field_image',
                    src: QH_SDISPLAY_ICO,
                    width: 30,
                    height: 30
                },
                {
                    type: 'field_dropdown',
                    name: 'Serial',
                    options:Esp32_HardWareSerial_Dropdown
                }
              ],
              args1: [
                {
                  "type": "input_statement",
                  "name": "DO"
                }
              ],
              "tooltip": "",
              colour: color_screen,
              extensions: ["shape_statement"]
            });
      }
    };

    //小彩屏横竖屏设置
    Blockly.Blocks.QDP_esp32_display_samll_HV = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_HV,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[[(Blockly.Msg.QDP_display_samll_HV0), "2"],
                                [(Blockly.Msg.QDP_display_samll_HV1), "3"],
                                [(Blockly.Msg.QDP_display_samll_HV2), "1"],
                                [(Blockly.Msg.QDP_display_samll_HV3), "0"]
                                ]
                    }                 
                ],
                "tooltip": "横坚屏设置",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //屏亮度设置
    Blockly.Blocks.QDP_esp32_display_samll_BL = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_BL,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_bl_1'
                    }               
                ],
                "tooltip": "屏亮度设置",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //小彩屏颜色刷屏
    Blockly.Blocks.QDP_esp32_display_samll_clr = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_clr,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[[(Blockly.Msg.QDP_display_samll_clr1), "CLR"],
                                [(Blockly.Msg.QDP_display_samll_clr2), "SBC"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_clr_1'
                    }               
                ],
                "tooltip": "颜色刷屏或背景颜色设置",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //小彩屏颜色刷屏
    Blockly.Blocks.QDP_esp32_display_samll_pic = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_pic,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[[(Blockly.Msg.QDP_display_samll_pic0), "0"],
                                [(Blockly.Msg.QDP_display_samll_pic1), "1"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_add'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_X'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_Y'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_W'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_H'
                    }                
                ],
                "tooltip": "颜色刷屏或背景颜色设置",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //彩屏定义图像名称和数据
    Blockly.Blocks.QDP_esp32_customize_display_define_bitmap_data = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_customize_display_define_bitmap_data,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [ 
                    {
                        type: 'input_value',
                        name: 'image_name'
                    }, 
                    {
                        type: 'input_value',
                        name: 'data'
                    }                
                ],
                "tooltip": "彩屏定义图像名称和数据",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //自定义取模显示
    Blockly.Blocks.QDP_esp32_customize_display = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_customize_display,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'data'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_X'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_Y'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_W'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pic_H'
                    }, 
                    {
                        type: 'input_value',
                        name: 'colour'
                    }               
                ],
                "tooltip": "自定义取模显示，使用需要将彩屏波特率更改为115200方可得到最佳效果，其他波特率可能会导致图像部分缺失",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //小彩屏画点指令
    Blockly.Blocks.QDP_esp32_display_samll_PS = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_PS,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_ps_X'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_ps_Y'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_ps_colou'
                    }             
                ],
                "tooltip": "画点",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //小彩屏画线框
    Blockly.Blocks.QDP_esp32_display_samll_PL = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_PL,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[[(Blockly.Msg.QDP_display_samll_pl1), "PL"],
                                [(Blockly.Msg.QDP_display_samll_pl2), "BOX"],
                                [(Blockly.Msg.QDP_display_samll_pl3), "BOXF"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pl_X'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pl_Y'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pl_X2'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pl_Y2'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_pl_colou'
                    }             
                ],
                "tooltip": "画线框",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //小彩屏画线框
    Blockly.Blocks.QDP_esp32_display_samll_CIR = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_CIR,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[[(Blockly.Msg.MIXLY_QDP_displayhollowround), "CIR"],
                                [(Blockly.Msg.MIXLY_QDP_displaysolidround), "CIRF"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_cir_X'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_cir_Y'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_cir_R'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_cir_colou'
                    }           
                ],
                "tooltip": "画圆",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //显示文本
    Blockly.Blocks.QDP_esp32_display_samll_DC = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_DC,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[["16", "16"],
                                ["24", "24"],
                                ["32", "32"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_colou'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_X'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_text'
                    }           
                ],
                "tooltip": "显示文本信息",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //显示文本
    Blockly.Blocks.QDP_esp32_display_samll_CN = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_DC,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[["16", "16"],
                                ["24", "24"],
                                ["32", "32"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_colou'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_X'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_text'
                    }           
                ],
                "tooltip": "显示中文文本信息",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //显示文本
    Blockly.Blocks.QDP_esp32_display_samll_CN_1 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_DC,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[["16", "16"],
                                ["24", "24"],
                                ["32", "32"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_colou'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_X'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_dc_text'
                    }           
                ],
                "tooltip": "支持中文或中文变量字符串,英文或符号，运行占系统内存较大！",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //显示文本
    Blockly.Blocks.QDP_esp32_display_samll_SBCDC = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_SBCDC,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[["16", "16"],
                                ["24", "24"],
                                ["32", "32"]]
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_sbcdc_colou2'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_sbcdc_colou'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_sbcdc_X'
                    }, 
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_sbcdc_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'QDP_display_samll_sbcdc_text'
                    }           
                ],
                "tooltip": "显示带底色的文本信息",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //自定指令
    Blockly.Blocks.QDP_esp32_display_samll_order = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_order,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'text'
                    }          
                ],
                "tooltip": "输入自定义指令",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //小彩屏波特率设置
    Blockly.Blocks.QDP_esp32_display_samll_btl = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_display_samll_btl,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options:Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options:[["9600", "9600"],
                                ["115200", "115200"],
                                ["19200", "19200"],
                                ["5600", "5600"]]
                    }          
                ],
                "tooltip": "设置屏的通讯波特率，9600（出厂值），每次更改后要关电重启，不建议更改！",
                colour: color_screen,
                extensions: ['shape_statement']
            });
        }
    };

    //ESP32触控
    Blockly.Blocks.QDP_inout_esp32_touchRead = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_inout_esp32_touchRead,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_C02_TOUCH_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'touch_pin',
                        options:qdprobotESP32_Touch_PIN_Input_Dropdown
                    }
                               
                ],
                "tooltip": "获取某管脚触摸传感器的值",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //ESP32触控事件
    Blockly.Blocks.QDP_inout_esp32_touchEvents = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_inout_esp32_touchEvents,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_C02_TOUCH_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'touch_pin',
                        options:qdprobotESP32_Touch_PIN_Input_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'Model',
                        options:[[Blockly.Msg.MIXLY_ESP32_TOUCH_Events_changed,'changed'],
                                [Blockly.Msg.MIXLY_ESP32_TOUCH_Events_touching,'touching'],
                                [Blockly.Msg.MIXLY_ESP32_TOUCH_Events_touched,'touched']]
                    }                
                ],
                "tooltip": "触摸传感器事件:\n-->[改变]:按下时输出1,松开时输出-1,否则输出0.\n-->[按住]:按住时输出1,没按时输出0\n-->[单按]:按下时输出一次1\n因是事件型函数,请用变量接收函数返回结果.然后再判断变量的值.",
                colour: color_c02_serson,
                extensions: ['output_boolean']
            });
        }
    };

    //按钮
    Blockly.Blocks.qdp_esp32_buttonl = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_buttonl,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Button_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options:qdprobotESP32_LR_PIN_Input_Dropdown
                    }             
                ],
                "tooltip": "按钮输入",
                colour: color_c02_serson,
                extensions: ['output_boolean']
            });
        }
    };

    //左右按钮
    Blockly.Blocks.qdp_esp32_buttonx = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_buttonx,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Button_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options:qdprobotESP32_BOTH_PIN_Input_Dropdown
                    }             
                ],
                "tooltip": "常开按钮开关，按下为输入，\n按左或右相同效果",
                colour: color_c02_serson,
                extensions: ['output_boolean']
            });
        }
    };

    //启用多功能按钮
    Blockly.Blocks.qdp_esp32_buttonfuction1 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_buttonfuction1,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Button_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options:qdprobotESP32_LR_PIN_Input_Dropdown
                    }             
                ],
                "tooltip": "开启钮的多功能，必须在使用\"多功能按钮\"前先使用此块定义，\n相当于多功能的开关",
                colour: color_c02_serson,
                extensions: ['shape_statement']
            });
        }
    };

    //多功能钮
    Blockly.Blocks.qdp_esp32_button1 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_button1,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Button_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options:qdprobotESP32_LR_PIN_Input_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options:[[(Blockly.Msg.MIXLY_QDP_BUTTONSingleClick),"0"],
                                [(Blockly.Msg.MIXLY_QDP_BUTTONDoubleClick), "1"],
                                [(Blockly.Msg.MIXLY_QDP_BUTTONTripleClick),"2"],
                                [(Blockly.Msg.MIXLY_QDP_BUTTONSingleLongClick),"3"],
                                [(Blockly.Msg.MIXLY_QDP_BUTTONDoubleLongClick),"4"],
                                [(Blockly.Msg.MIXLY_QDP_BUTTONTripleLongClick),"5"]]
                    }             
                ],
                "tooltip": "与按钮功能相同，只是启动这个功能后按法不一样，\n使用前要加 启用多功能按钮 块",
                colour: color_c02_serson,
                extensions: ['output_boolean']
            });
        }
    };

    //多功能钮
    Blockly.Blocks.qdp_esp32_chaoshengbo = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_chaoshengbo,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Button_ICO,
                        width: 30,
                        height: 30
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options:qdprobotESP32_BOTH_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options:qdprobotESP32_UNIT
                    }             
                ],
                "tooltip": "与按钮功能相同，只是启动这个功能后按法不一样，\n使用前要加 启用多功能按钮 块",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //巡线
    Blockly.Blocks.qdp_esp32_grayscale = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_grayscale,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Line_follower_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Input_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options: [["ON", "1"],["OFF", "0"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN3',
                        options: [["ON", "1"],["OFF", "0"]]
                    }
                ],
                "tooltip": "左右感应器对白色物体约2CM时有输入(亮灯),\n相反对黑色物体不作反应，通常用来区分白黑",
                colour: color_c02_serson,
                extensions: ['output_boolean']
            });
        }
    };

    //光线
    Blockly.Blocks.qdp_esp32_lightSensor = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_lightSensor,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_lightSensor_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_L2_PIN_Input_Dropdown
                    }
                ],
                "tooltip": "对光线强弱的感应，返回对应的模拟数值，\n亮数值变大，暗数值变小",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //声音
    Blockly.Blocks.qdp_esp32_sound = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_sound,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_sound_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_R2_PIN_Input_Dropdown
                    }
                ],
                "tooltip": "对声音大小的感应，返回对应的模拟数值，\n周边噪声大值变大，相反变小",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //电位器
    Blockly.Blocks.qdp_esp32_potentiometer = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_potentiometer,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Potentiometer_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_LR2_PIN_Input_Dropdown
                    }
                ],
                "tooltip": "读取电位器的模拟阻值",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //土壤
    Blockly.Blocks.qdp_esp32_Soilmoisture = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_Soilmoisture,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_Soilmoisture_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_L2_PIN_Input_Dropdown
                    }
                ],
                "tooltip": "土壤湿度传感器的模拟数值",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //DH11温湿度
    Blockly.Blocks.qdp_esp32_dht11 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_dht11,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_dht11_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_L2_PIN_Input_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'WHAT',
                        options: [[Blockly.Msg.QH_Temperature,"0"], [Blockly.Msg.QH_Humidity,"1"]]
                    }
                ],
                "tooltip": "读取传感器的摄氏温度值及相对湿度",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

     //DH11温湿度
    Blockly.Blocks.qdp_esp32_yscgq = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_yscgq,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_yssb_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN1',
                        options: QH_yssb_delay
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options: QH_yssb_gain
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN3',
                        options: [[Blockly.Msg.QH_noPrint,"0"], [Blockly.Msg.QH_Print,"1"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    }  
                ],
                "tooltip": "启用颜色识别的初始化必要块，通过打印值得到对应的参数，实际运行时关闭打印功能，否则会干扰别的串口或IIC模块输出冲突。",
                colour: color_c02_serson,
                extensions: ['shape_statement']
            });
        }
    };

    //颜色识别获取
    Blockly.Blocks.qdp_yscgq2 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_yscgq2,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_yssb_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: [["R", "r"],["G", "g"],["B", "b"],["C", "c"],["colorTemp", "colorTemp"],["lux", "lux"]]
                    }
                ],
                "tooltip": "颜色传感器读取的对应值变量",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //颜色对比
    Blockly.Blocks.qdp_yscgq3 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_yscgq3,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_yssb_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: [["R", "r"],["G", "g"],["B", "b"],["C", "c"],["colorTemp", "colorTemp"],["lux", "lux"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    },  
                    {
                        type: 'input_value',
                        name: 'num2'
                    }  
                ],
                "tooltip": "颜色传感器的值的应用",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

     //陀螺仪更新数据
    Blockly.Blocks.QDP_ESP32_MPU6050_update = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_ESP32_MPU6050_update,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MPU6050_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    
                ],
                "tooltip": "初始化陀螺仪,用在读取值前,只用一次即可",
                colour: color_c02_serson,
                extensions: ['shape_statement']
            });
        }
    };

    //MPU6050-获取数据
    Blockly.Blocks.QDP_ESP32_MPU6050_GETDATA = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_ESP32_MPU6050_GETDATA,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MPU6050_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'MPU6050_TYPE',
                        options: [
                                  [Blockly.Msg.QH_Accel_X, "mpu.getAccX()"],
                                  [Blockly.Msg.QH_Accel_Y, "mpu.getAccY()"],
                                  [Blockly.Msg.QH_Accel_Z, "mpu.getAccZ()"],
                                  [Blockly.Msg.QH_Gyro_X, "mpu.getAccAngleX()"],
                                  [Blockly.Msg.QH_Gyro_Y, "mpu.getAccAngleY()"],
                                  [Blockly.Msg.QH_Gyro_Z, "mpu.getAngleZ()"],
                                  [Blockly.Msg.QH_readTempC, "mpu.getTemp()"]
                                  ]
                    }
                ],
                "tooltip": "陀螺仪获取数据",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //MPU6050-获取数据
    Blockly.Blocks.QDP_ESP32_hallRead = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_ESP32_hallRead,
                args0: [
                ],
                "tooltip": "ESP32霍尔值",
                colour: color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    //high low
    Blockly.Blocks.qdp_inout_highlow = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                args0: [
                    {
                        type: 'field_dropdown',
                        name: 'BOOL',
                        options: [
                        ['HIGH', "HIGH"], 
                        ['LOW', "LOW"]
                        ]
                    }
                ],
                "tooltip": "状态选单 高/低",
                colour: QH_Actuator_color,
                extensions: ['output_boolean']
            });
        }
    };

    //LED灯
    Blockly.Blocks.qdp_esp32_ledlight = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_ledlight,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_LED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_LR_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'STAT'
                    }
                ],
                "tooltip": "开启LED灯",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //读取LED灯状态
    Blockly.Blocks.qdp_esp32_read_ledlight = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_read_ledlight,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_LED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_LR_PIN_Output_Dropdown
                    }
                ],
                "tooltip": "读取LED灯状态",
                colour: QH_Actuator_color,
                extensions: ['output_boolean']
            });
        }
    };

    //LED灯亮度
    Blockly.Blocks.qdp_esp32_ledlight3 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_ledlight3,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_LED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_LR_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'ledn'
                    }
                ],
                "tooltip": "LED灯亮度调节",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //继电器
    Blockly.Blocks.qdp_esp32_relay = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_relay,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_RELAY_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_LR_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'STAT'
                    }
                ],
                "tooltip": "继电器输出",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //读取继电器状态
    Blockly.Blocks.qdp_esp32_read_relay = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_read_relay,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_RELAY_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_LR_PIN_Output_Dropdown
                    }
                ],
                "tooltip": "读取继电器状态",
                colour: QH_Actuator_color,
                extensions: ['output_boolean']
            });
        }
    };

    //RGB
    Blockly.Blocks.rgb_esp32_led = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.rgb_esp32_led,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_RGB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN1',
                        options: qdprobotESP32_L_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'num8'
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    },
                    {
                        type: 'input_value',
                        name: 'R'
                    },
                    {
                        type: 'input_value',
                        name: 'G'
                    },
                    {
                        type: 'input_value',
                        name: 'B'
                    }
                ],
                "tooltip": "RGB对应灯号颜色的值，灯号共4个，总灯数跟模块灯数相同，0为全部同时工作\n对应的值是代表第几个灯的，最大255，0为关",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //蜂鸣器
    Blockly.Blocks.qdp_esp32_buzzer3 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_buzzer3,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BUZZER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_Buzzer_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'PIN2'
                    },
                    {
                        type: 'input_value',
                        name: 'DURATION'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'CHANNEL',
                        options: qdprobotESP32_Esp32_CHANNEL
                    }
                ],
                "tooltip": "蜂鸣器的发音设置，频率不同时发音不一样，时间为发音的持续时间",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //蜂鸣器
    Blockly.Blocks.qdp_buzzer_Dropdown = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                args0: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options: QDPTONE_NOTES
                    }
                ],
                "tooltip": "蜂鸣器的发音设置，频率不同时发音不一样，时间为发音的持续时间",
                colour: QH_Actuator_color,
                extensions: ['output_number']
            });
        }
    };

    //蜂鸣器音乐
    Blockly.Blocks.qdp_esp32_buzzer_music = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_buzzer_music,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BUZZER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_Buzzer_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options: QDPTONE_TONE_MUSIC
                    },
                    {
                        type: 'field_dropdown',
                        name: 'CHANNEL',
                        options: qdprobotESP32_Esp32_CHANNEL
                    }
                ],
                "tooltip": "对应播放系统内音乐，直到自动播完",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //直流电机
    Blockly.Blocks.qdp_esp32_motor = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_motor,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MOTOR_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'MotorPin',
                        options: qdprobotESP32_MotorNum
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'speed'
                    }
                ],
                "tooltip": "5~8V直流电机在M1-M2口上的控制，旋转速度通过0~255来控制，\n负数为反转，0为停止，工作时间通过延时指令来控制\n当电机受外部机构卡死时，会内部保护停机，这时重启电源即可\n 一定要开启电源开关，不然电机不转.",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //舵机360
    Blockly.Blocks.qdp_esp32_servomotor360 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_servomotor360,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MOTOR_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: qdprobotESP32_L_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options: [[Blockly.Msg.QH_CW,'1'],[Blockly.Msg.QH_CCW,'0'],]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    }
                ],
                "tooltip": "舵机,注意选择对应的舵机类型0~360度,不建议长时间运行！\n",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //舵机180
    Blockly.Blocks.qdp_esp32_servomotor2 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_servomotor2,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MOTOR_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: qdprobotESP32_L_PIN_Output_Dropdown
                    },                   
                    {
                        type: 'input_value',
                        name: 'num1'
                    },
                    {
                        type: 'input_value',
                        name: 'time'
                    }
                ],
                "tooltip": "舵机,注意选择对应的舵机类型0~180度,不建议长时间运行！\n",
                colour: QH_Actuator_color,
                extensions: ['shape_statement']
            });
        }
    };

    //舵机角度
    Blockly.Blocks.qdp_esp32_servomotorread = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_servomotorread,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MOTOR_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: qdprobotESP32_L_PIN_Output_Dropdown
                    }
                ],
                "tooltip": "舵机,注意选择对应的舵机类型0~180度,不建议长时间运行！\n",
                colour: QH_Actuator_color,
                extensions: ['output_number']
            });
        }
    };

    //语音识别发送数据
    Blockly.Blocks.QDP32_ASR_SendData = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP32_ASR_SendData,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'keyword',
                        options: QDP_ASR_keyword_dropdown2
                    }
                ],
                "tooltip": "发送指令控制语音模块相关IO动作，输出高电平5V",
                colour: QH_SPEECH_color2,
                extensions: ['shape_statement']
            });
        }
    };

    //语音识别接收
    Blockly.Blocks.QDP32_ASR_ReceiveData = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP32_ASR_ReceiveData,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }
                ],
                "tooltip": "初始化定义模块端口,模块唤醒词：小齐小齐、小护小护、你好齐护、齐护机器人、齐护齐护，并亮起识别状态灯,\n其中识别词：音量增大/提高音量/增大音量/加大音量/减小音量/音量减小/最大音量/最小音量 为模块内部音量控制，不带输出。",
                colour: QH_SPEECH_color2,
                extensions: ['shape_statement']
            });
        }
    };

    //语音识别对比数据
    Blockly.Blocks.QDP32_ASR_CompareData = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP32_ASR_CompareData,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'keyword',
                        options: QH_ASR_keyword_dropdown
                    }
                ],
                "tooltip": "当接收到对应的语音指令时",
                colour: QH_SPEECH_color2,
                extensions: ['output_boolean']
            });
        }
    };

    //AI语音识别初始化
    Blockly.Blocks.speech_recognition_initialization = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.speech_recognition_initialization,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'port',
                        options: [["P3-21-22（IIC）","21,22,"], ["P4-16-17（RGB）","16,17,"], ["P5-18-5","18,5,"], ["P6-23-19","23,19,"], ["P7-15-2（touch)","15,2,"], ["P8-27-14（touch）","27,14,"], ["P9-12-13（touch）","12,13,"], ["P10-25-26","25,26,"]]
                    },
                    {
                        type: 'input_value',
                        name: 'auth'
                    }
                ],
                "tooltip": "设备拾音器端口及输入授权码",
                colour: QH_SPEECH_color1,
                extensions: ['shape_statement']
            });
        }
    };

    //语音识别对比数据
    Blockly.Blocks.speech_recognition = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.speech_recognition,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Language',
                        options: [[Blockly.Msg.AI_SPEECH_RECOGNITION3,"\"1537\""], [Blockly.Msg.AI_SPEECH_RECOGNITION4,"\"1536\""], [Blockly.Msg.AI_SPEECH_RECOGNITION5,"\"1737\""], [Blockly.Msg.AI_SPEECH_RECOGNITION6,"\"1637\""]]
                    }
                ],
                "tooltip": "当条件为真满足时开始识别，同时合成后返回的结果放到[字符串类型变量]内再应用，并必须配套停止识别",
                colour: QH_SPEECH_color1,
                extensions: ['output_boolean']
            });
        }
    };

    //语音识别对比数据
    Blockly.Blocks.identification_switch = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.identification_switch,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                "tooltip": "当条件满足为假时停止识别并返回",
                colour: QH_SPEECH_color1,
                extensions: ['shape_statement']
            });
        }
    };

    //语音识别对比数据
    Blockly.Blocks.qdp_esp32_QF_hc_init = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_hc_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options: Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }
                ],
                "tooltip": "初始化语音合成/识别模块",
                colour: QH_SPEECH_color3,
                extensions: ['shape_statement']
            });
        }
    };

    //QF合成
    Blockly.Blocks.qdp_esp32_QF_hc = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_hc,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN33',
                        options: [['女音1', "[m3]"],['男音1', "[m51]"],['男音2', "[m52]"],['女音2', "[m53]"],['唐老鸭', "[m54]"],['女童声', "[m55]"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN44',
                        options: [[(Blockly.Msg.QH_Donotinterrupt), "1"],[(Blockly.Msg.QH_Interruptible), "0"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }
                ],
                "tooltip": '不支持变量，可以直接输入中英文，拼音，标点可以使读音间断\n'
                           +'“等待完成“是指在合成发音完后才执行下一指令，否则是同时执行下一指令，注意其它参数及发音人的选择\n'
                           +'此为串口运行设备，如多串口设备运行，运行前要加“软串口定义到”块指令进行切换串口',
                colour: QH_SPEECH_color3,
                extensions: ['shape_statement']
            });
        }
    };

    //QF合成
    Blockly.Blocks.qdp_esp32_QF_hc_en = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_hc,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN33',
                        options: [['女音1', "[m3]"],['男音1', "[m51]"],['男音2', "[m52]"],['女音2', "[m53]"],['唐老鸭', "[m54]"],['女童声', "[m55]"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN44',
                        options: [[(Blockly.Msg.QH_Donotinterrupt), "1"],[(Blockly.Msg.QH_Interruptible), "0"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }
                ],
                "tooltip": '只支持英文和变量',
                colour: QH_SPEECH_color3,
                extensions: ['shape_statement']
            });
        }
    };
    //QF合成
    Blockly.Blocks.qdp_esp32_QF_hc_chinese = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_hc,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN33',
                        options: [['女音1', "[m3]"],['男音1', "[m51]"],['男音2', "[m52]"],['女音2', "[m53]"],['唐老鸭', "[m54]"],['女童声', "[m55]"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN44',
                        options: [[(Blockly.Msg.QH_Donotinterrupt), "1"],[(Blockly.Msg.QH_Interruptible), "0"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }
                ],
                "tooltip": '支持中文或中文变量字符串,英文或符号，运行占系统内存较大！',
                colour: QH_SPEECH_color3,
                extensions: ['shape_statement']
            });
        }
    };

    //QF提示音
    Blockly.Blocks.qdp_esp32_QF_sound = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_sound,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: [['信息声', "1"],['铃声', "2"],['警报声', "3"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    }
                ],
                "tooltip": "此为串口运行设备,合成模块中发出指定的提示音,注:编号一定要为两位的数值,个位数时要加0\n可以用“停止合成”块终止它",
                colour: QH_SPEECH_color3,
                extensions: ['shape_statement']
            });
        }
    };

    //QF停止合成
    Blockly.Blocks.qdp_esp32_QF_stophc = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_stophc,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SPEECH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                ],
                "tooltip": '此为串口运行设备,功能融合在合成模块内（同一模块内），\n只能识别到系统烧录的指定出厂30个的指令，指令如要自定义\n'
                                  +'请用套件中提供的软件按要求设定，可以直接输入中英文，拼音，标点可以使读音间断，\n'
                                  +'在“语音结果”块的前面使用并在同一运行块内\n“说出结果“是指说出识别到的语句',
                colour: QH_SPEECH_color3,
                extensions: ['shape_statement']
            });
        }
    };

    //QF启动识别
    Blockly.Blocks.qdp_esp32_QF_startstopsb = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_startstopsb,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MICROPHONE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN33',
                        options: [[(Blockly.Msg.QH_Sayresult),"1"],[(Blockly.Msg.QH_NoSayresult), "0"]]
                    }
                ],
                "tooltip": '此为串口运行设备,功能融合在合成模块内（同一模块内），\n只能识别到系统烧录的指定出厂30个的指令，指令如要自定义\n'
                                  +'请用套件中提供的软件按要求设定，可以直接输入中英文，拼音，标点可以使读音间断，\n'
                                  +'在“语音结果”块的前面使用并在同一运行块内\n“说出结果“是指说出识别到的语句',
                colour: QH_SPEECH_color4,
                extensions: ['shape_statement']
            });
        }
    };

    //QF识别结果
    Blockly.Blocks.qdp_esp32_QF_sbjg = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_sbjg,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MICROPHONE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }
                ],
                "tooltip": "请输入模块预设(烧录)的相关词组,如果非二次开发必须采用出厂词组相同，当识别到相同的结果时执行，在“开启语音识别”块的后面使用并在同一运行块内",
                colour: QH_SPEECH_color4,
                extensions: ['output_boolean']
            });
        }
    };

    //QF识别结果2
    Blockly.Blocks.qdp_esp32_QF_sbjg2 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_QF_sbjg,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MICROPHONE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pinn2',
                        options: [["把灯打开", "把灯打开"],["关闭灯", "关闭灯"],["开始走", "开始走"],["确定开始", "确定开始"],["停止执行", "停止执行"],["是假的", "是假的"],["真的", "真的"],["我同意", "我同意"],["不可以", "不可以"],["温度", "温度"],["这是哪儿", "这是哪儿"],["现在几点", "现在几点"],["今天几号", "今天几号"],["读信息", "读信息"],["来个表情", "来个表情"],["往后退", "往后退"],["向前走", "向前走"],["向左转", "向左转"],["右转弯", "右转弯"],["暂停播放", "暂停播放"],["打开音乐", "打开音乐"],["关掉音乐", "关掉音乐"],["再听一次", "再听一次"],["再读一遍", "再读一遍"],["网络情况", "网络情况"],["断开连接", "断开连接"],["暂停程序", "暂停程序"],["let me go", "let me go"],["yes ok", "yes ok"],["stop", "stop"]]
                    }
                ],
                "tooltip": "请选择模块出厂设置的词组,当识别到相同的结果时执行，在“开启语音识别”块的后面使用并在同一运行块内",
                colour: QH_SPEECH_color4,
                extensions: ['output_boolean']
            });
        }
    };

    //红外遥控器接收
    Blockly.Blocks.qdp_esp32_ir_re2 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_ir_re2,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_REMOTE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN1',
                        options: qdprobotESP32_L_PIN_Input_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: [["电源Power", "1"],["Menu", "2"],["静音NOSound", "3"],["Mode", "4"],["+", "5"],["返回Back", "6"],["上一Prev", "7"],["启/停Start/stop", "8"],["下一Next", "9"],["0", "10"],["-", "11"],["OK", "12"],
["1", "13"],["2", "14"],["3", "15"],["4", "16"],["5", "17"],["6", "18"],["7", "19"],["8", "20"],["9","21"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[Blockly.Msg.QH_IrPress,'0'],[Blockly.Msg.QH_IrPressOn,'1']]
                    }                    
                ],
                "tooltip": "对应摇控器的按键输入，注：红外遥控器的“发送” “接收”在一个程序内不能同时使用，只能二选一！",
                colour: QH_COMMUNICATE_color1,
                extensions: ['output_boolean']
            });
        }
    };

    //红外接收解码
    Blockly.Blocks.qdp_ESP32_ir_recv_raw = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_ESP32_ir_recv_raw,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_REMOTE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN1',
                        options: qdprobotESP32_L_PIN_Input_Dropdown
                    }                 
                ],
                "tooltip": "红外解码对应遥控键值,并打印在串口(115200)，请复制保存数组和长度值，用在发射数组中！",
                colour: QH_COMMUNICATE_color1,
                extensions: ['shape_statement']
            });
        }
    };

    //红外遥控器接收
    Blockly.Blocks.qdp_esp32_ir_send_nec = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_ir_send_nec,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_REMOTE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [['RC5', 'RC5'],['NEC', 'NEC'],['Whynter', 'Whynter'],['Sony', 'Sony'],['RC6', 'RC6'],['DISH', 'DISH'],['SharpRaw', 'SharpRaw'],['SAMSUNG', 'SAMSUNG']]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options:qdprobotESP32_R_PIN_Output_Dropdown
                    },    
                    {
                        type: 'input_value',
                        name: 'data'
                    }                                 
                ],
                "tooltip": "发送指定类型的红外数据，注：红外遥控器的“发送” “接收”在一个程序内不能同时使用，只能二选一！",
                colour: QH_COMMUNICATE_color1,
                extensions: ['shape_statement']
            });
        }
    };

    //红外发射数组
    Blockly.Blocks.QDP_esp32_ir_send_raw = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_ir_send_raw,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_REMOTE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_R_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options: [["#1", "1"],["#2", "2"],["#3", "3"],["#4", "4"],["#5", "5"],["#6", "6"],["#7", "7"],["#8", "8"],["#9", "9"],["#10", "10"],["#11", "11"],["#12", "12"],["#13", "13"],["#14", "14"],["#15", "15"],["#16", "16"]]
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    },
                    {
                        type: 'input_value',
                        name: 'length'
                    },
                    {
                        type: 'input_value',
                        name: 'freq'
                    }                                     
                ],
                "tooltip": "将读取到的红外数组放入这里发送，注意数组长度要对应长度，不同数组时要改变编号！",
                colour: QH_COMMUNICATE_color1,
                extensions: ['shape_statement']
            });
        }
    };

    //蓝牙接收数据
    Blockly.Blocks.qdp_esp32_BT_START = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_START,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'VALUE'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PRINT',
                        options: [[Blockly.Msg.QH_noPrint, "false"], [Blockly.Msg.QH_Print, "true"]]
                    }                
                ],
                "tooltip": "注：内置蓝牙只支持手机蓝牙4.2",
                colour: QH_COMMUNICATE_color2,
                extensions: ['shape_statement']
            });
        }
    };

    //蓝牙按键
    Blockly.Blocks.qdp_esp32_BT_button = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_button,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'TEXT',
                        "text": "U"
                    }                                    
                ],
                "tooltip": "接收到蓝牙模块在对应APP输入的按键设定字符值（APP发送格式为[,发送的字符.]）,\n在[启用蓝牙接收]后有效",
                colour: QH_COMMUNICATE_color2,
                extensions: ['output_boolean']
            });
        }
    };

     //蓝牙变量
    Blockly.Blocks.qdp_esp32_BT_variable = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_variable,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: [["1", "1"],["2", "2"],["3", "3"],["4", "4"],["5", "5"]]
                    }                 
                ],
                "tooltip": "蓝牙APP上的滑动变量对应值,在[启用蓝牙接收]后有效",
                colour: QH_COMMUNICATE_color2,
                extensions: ['output_number']
            });
        }
    };

    //蓝牙发送变量
    Blockly.Blocks.qdp_esp32_BT_print = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_print,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'N1'
                    },
                    {
                        type: 'input_value',
                        name: 'N2'
                    },                
                    {
                        type: 'input_value',
                        name: 'N3'
                    },
                    {
                        type: 'input_value',
                        name: 'N4'
                    },
                    {
                        type: 'input_value',
                        name: 'N5'
                    }
                ],
                "tooltip": " 蓝牙APP V1~V5 显示变量对应值,可以为传感器值或字符串，注：重复发送要加延时间隔约30毫秒！",
                colour: QH_COMMUNICATE_color2,
                extensions: ['shape_statement']
            });
        }
    };

    //蓝牙Master连接
    Blockly.Blocks.qdp_esp32_BT_MASTER_CONNECT = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_MASTER_CONNECT,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[(Blockly.Msg.QDPROBOT_NAME),"0"],["MAC","1"]]
                    },
                    {
                      type: "field_label_serializable",
                      name: "info",
                      "text": ""
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }
                ],
                "tooltip": " 板载经典蓝牙做为主机连接从机,支持齐护QC01蓝牙模块(02),可用蓝牙名连接或用蓝牙模块上的MAC连接，\n选择为[名称]时可直接输入或放入字符串变量\n选择为MAC时，输入正确的12位MAC地址可生成数组，否则视为数组名。\n(可输入数组变量名，或直接输入从蓝牙模块得到的MAC地址，例：000CBF0C2F5E)\n返回连接状态（布尔）\n",
                colour: QH_COMMUNICATE_color4,
                extensions: ['output_boolean']
            });
        }
    };

    //蓝牙Master连接
    Blockly.Blocks.qdp_esp32_BT_MASTER_AVAILABLE = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.qdp_esp32_BT_MASTER_AVAILABLE,
                "tooltip": "板载经典蓝牙。\n检测蓝牙缓存区是否有数据可读？\n如果有返回true",
                colour: QH_COMMUNICATE_color4,
                extensions: ['output_boolean']
            });
        }
    };

    //蓝牙Master连接状态
    Blockly.Blocks.qdp_esp32_BT_MASTER_CONNECTED = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_MASTER_CONNECTED,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'TIMEOUT'
                    }
                ],
                "tooltip": "板载经典蓝牙。\n检测蓝牙连接状态？\n如果已连接返回true\n可设置检测超时时间",
                colour: QH_COMMUNICATE_color4,
                extensions: ['output_boolean']
            });
        }
    };

    //蓝牙Master连接控制
    Blockly.Blocks.qdp_esp32_BT_MASTER_CONNECT_CONTROL = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_MASTER_CONNECT_CONTROL,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[(Blockly.Msg.QDPROBOT_CONNECT),"connect"],[(Blockly.Msg.QDPROBOT_DISCONNECT),"disconnect"]]
                    }
                ],
                "tooltip": "板载经典蓝牙。\n在使用MAC地址或者名称连接之后,可直接使用本块断开或者连接蓝牙而不需要再次输入蓝牙名或者MAC地址.",
                colour: QH_COMMUNICATE_color4,
                extensions: ['shape_statement']
            });
        }
    };

    //蓝牙Master连接
    Blockly.Blocks.qdp_esp32_BT_MASTER_READ = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.qdp_esp32_BT_MASTER_READ,
                "tooltip": "板载经典蓝牙。\n读取蓝牙接收缓存内的一个字节数据.返回int类型",
                colour: QH_COMMUNICATE_color4,
                extensions: ['output_number']
            });
        }
    };

    //蓝牙Master连接控制
    Blockly.Blocks.qdp_esp32_BT_MASTER_WRITE = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_BT_MASTER_WRITE,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [['uint_8',"0"],['uint_8[]',"1"]]
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }
                ],
                "tooltip": "板载经典蓝牙。\n读写数据\nuint_8单个写入支持uint8_t变量\nuint_8[]支持uint8_t数组",
                colour: QH_COMMUNICATE_color4,
                extensions: ['shape_statement']
            });
        }
    };

    //串口接收的数据等于
    Blockly.Blocks.qdp_esp32_serial_jieshouzhi = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_serial_jieshouzhi,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SERIAL_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'text'
                    }
                ],
                "tooltip": "此为串口运行,直接将读到的值和设定值对比,相同时为真,可用于蓝牙等模块的通讯回读",
                colour: QH_COMMUNICATE_color1,
                extensions: ['output_boolean']
            });
        }
    };

    //串口发送
    Blockly.Blocks.qdp_esp32_serial_fasong = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_serial_fasong,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SERIAL_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'OutputModel',
                        options: [[Blockly.Msg.QH_SERIAL_WRITE,'write'],[Blockly.Msg.QH_SERIAL_PRINT,'print'],[Blockly.Msg.QH_SERIAL_PRINTLN,'println']]
                    },
                    {
                        type: 'input_value',
                        name: 'text'
                    }                   
                ],
                "tooltip": "指定串口发送数值，如多串口设备运行，运行前要加“软串口定义到”块指令进行切换串口",
                colour: QH_COMMUNICATE_color1,
                extensions: ['shape_statement']
            });
        }
    };

    //串口接收
    Blockly.Blocks.qdp_esp32_serial_jieshou = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_serial_jieshou,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SERIAL_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }                 
                ],
                "tooltip": "当串口有数据读时读取的值",
                colour: QH_COMMUNICATE_color1,
                extensions: ['output_number']
            });
        }
    };

    //串口有数据可读
    Blockly.Blocks.qdp_esp32_serial_suju = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_serial_suju,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SERIAL_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }                 
                ],
                "tooltip": "软串有数据读取时",
                colour: QH_COMMUNICATE_color1,
                extensions: ['output_boolean']
            });
        }
    };

    //蓝牙键盘初始化
    Blockly.Blocks.esp32_BleKeyboard_init = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_BleKeyboard_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'deviceName'
                    },
                    {
                        type: 'input_value',
                        name: 'deviceManufacturer'
                    }               
                ],
                "tooltip": "蓝牙键盘初始化",
                colour: QH_COMMUNICATE_color4,
                extensions: ['shape_statement']
            });
        }
    };

    //蓝牙键盘已连接
    Blockly.Blocks.esp32_BleKeyboard_isConnected = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_BleKeyboard_isConnected,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [             
                ],
                "tooltip": "当蓝牙键盘已连接时执行的动作，要放在执行键盘的最前面",
                colour: QH_COMMUNICATE_color4,
                extensions: ['output_boolean']
            });
        }
    };

    //蓝牙键盘键值
    Blockly.Blocks.esp32_BleKeyboard_KeyValue = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_BleKeyboard_KeyValue,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [  
                    {
                        type: 'field_dropdown',
                        name: 'KeyValue',
                        options: [
                                  ['KEY_LEFT_CTRL' , 'KEY_LEFT_CTRL'],
                                  ['KEY_LEFT_SHIFT' , 'KEY_LEFT_SHIFT'],
                                  ['KEY_LEFT_ALT' , 'KEY_LEFT_ALT'],
                                  ['KEY_LEFT_GUI' , 'KEY_LEFT_GUI'],
                                  ['KEY_RIGHT_CTRL' , 'KEY_RIGHT_CTRL'],
                                  ['KEY_RIGHT_SHIFT' , 'KEY_RIGHT_SHIFT'],
                                  ['KEY_RIGHT_ALT' , 'KEY_RIGHT_ALT'],
                                  ['KEY_RIGHT_GUI' , 'KEY_RIGHT_GUI'],
                                  ['KEY_UP_ARROW' , 'KEY_UP_ARROW'],
                                  ['KEY_DOWN_ARROW' , 'KEY_DOWN_ARROW'],
                                  ['KEY_LEFT_ARROW' , 'KEY_LEFT_ARROW'],
                                  ['KEY_RIGHT_ARROW' , 'KEY_RIGHT_ARROW'],
                                  ['KEY_BACKSPACE' , 'KEY_BACKSPACE'],
                                  ['KEY_TAB' , 'KEY_TAB'],
                                  ['KEY_RETURN' , 'KEY_RETURN'],
                                  ['KEY_ESC' , 'KEY_ESC'],
                                  ['KEY_INSERT' , 'KEY_INSERT'],
                                  ['KEY_DELETE' , 'KEY_DELETE'],
                                  ['KEY_PAGE_UP' , 'KEY_PAGE_UP'],
                                  ['KEY_PAGE_DOWN' , 'KEY_PAGE_DOWN'],
                                  ['KEY_HOME' , 'KEY_HOME'],
                                  ['KEY_END' , 'KEY_END'],
                                  ['KEY_CAPS_LOCK' , 'KEY_CAPS_LOCK'],
                                  ['KEY_F1' , 'KEY_F1'],
                                  ['KEY_F2' , 'KEY_F2'],
                                  ['KEY_F3' , 'KEY_F3'],
                                  ['KEY_F4' , 'KEY_F4'],
                                  ['KEY_F5' , 'KEY_F5'],
                                  ['KEY_F6' , 'KEY_F6'],
                                  ['KEY_F7' , 'KEY_F7'],
                                  ['KEY_F8' , 'KEY_F8'],
                                  ['KEY_F9' , 'KEY_F9'],
                                  ['KEY_F10' , 'KEY_F10'],
                                  ['KEY_F11' , 'KEY_F11'],
                                  ['KEY_F12' , 'KEY_F12']
                                ]
                    }              
                ],
                "tooltip": "蓝牙键盘值",
                colour: QH_COMMUNICATE_color4,
                extensions: ['output_number']
            });
        }
    };

    //蓝牙键盘动作
    Blockly.Blocks.esp32_BleKeyboard_write_press = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_BleKeyboard_write_press,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_BLUETOOTH_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'model',
                        options: [
                                  [Blockly.Msg.esp32_BleKeyboard_write, "0"],
                                  [Blockly.Msg.esp32_BleKeyboard_print, "1"],
                                  [Blockly.Msg.esp32_BleKeyboard_press, "2"],
                                  [Blockly.Msg.esp32_BleKeyboard_release, "3"],
                                  [Blockly.Msg.esp32_BleKeyboard_releaseAll, "4"]
                                ]
                    },
                    {
                        type: 'input_value',
                        name: 'KeyValue'
                    }             
                ],
                "tooltip": "蓝牙键盘动作",
                colour: QH_COMMUNICATE_color4,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3初始化
    Blockly.Blocks.esp32_Mp3_init = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_Mp3_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'Serial',
                        options: Esp32_HardWareSerial_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }
                                      
                ],
                "tooltip": "MP3端口指定",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3指定
    Blockly.Blocks.qdp_esp32_MP3_bofangx = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_MP3_bofangx,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'num'
                    },   
                    {
                        type: 'input_value',
                        name: 'num2'
                    }                    
                ],
                "tooltip": "播放顺序为复制到内存卡里的时间为先后排序,注:复制时按时间排序，然后对着第一个时间点右键复制到内存卡，此时会按时间排序！",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3音量
    Blockly.Blocks.qdp_esp32_MP3_yingliang = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_MP3_yingliang,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'num'
                    }                
                ],
                "tooltip": "MP3音量",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3重复播放
    Blockly.Blocks.qdp_esp32_MP3_loopplay = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_MP3_loopplay,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'num'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    }                
                ],
                "tooltip": "MP3重复播放",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3播放暂停
    Blockly.Blocks.qdp_esp32_MP3_startpause = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_MP3_startpause,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN22',
                        options: [[Blockly.Msg.QH_START, "1"], [Blockly.Msg.QH_PAUSE, "0"]]
                    }         
                ],
                "tooltip": "MP3播放暂停",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3上一首/下一首
    Blockly.Blocks.qdp_esp32_MP3_previous_next = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_MP3_previous_next,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN22',
                        options: [[Blockly.Msg.QH_PREVIOUS, "0"], [Blockly.Msg.QH_NEXT, "1"]]
                    }         
                ],
                "tooltip": "MP3上一首/下一首",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //MP3播放音效
    Blockly.Blocks.qdp_esp32_MP3_play = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_MP3_play,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options: [[(Blockly.Msg.QH_play1), "1"],[(Blockly.Msg.QH_play2), "2"],[(Blockly.Msg.QH_play3), "3"],[(Blockly.Msg.QH_play4), "4"],[(Blockly.Msg.QH_play5), "5"],[(Blockly.Msg.QH_play6), "6"],[(Blockly.Msg.QH_play7), "7"],[(Blockly.Msg.QH_play8), "8"],[(Blockly.Msg.QH_play9), "9"],[(Blockly.Msg.QH_play10), "10"],[(Blockly.Msg.QH_play11), "11"],[(Blockly.Msg.QH_play12), "12"],[(Blockly.Msg.QH_play13), "13"],[(Blockly.Msg.QH_play14), "14"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num'
                    }           
                ],
                "tooltip": "MP3播放音效",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //定义PlayerMini目录
    Blockly.Blocks.qdp_ESP32_define_mp3_directory = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_ESP32_define_mp3_directory,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'data'
                    }           
                ],
                "tooltip": "使用批处理命令获取SD卡文件目录",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //playerMini指定播放
    Blockly.Blocks.qdp_ESP32_mp3_designated_play = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_ESP32_mp3_designated_play,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_MP3_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'mode',
                        options: [[Blockly.Msg.QH_BOFANGX,"myQDPPlayer.play"], [Blockly.Msg.QH_LOOPPLAY,"myQDPPlayer.loop"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num'
                    },
                    {
                        type: 'input_value',
                        name: 'NAME'
                    }         
                ],
                "tooltip": "指定文件名播放音频",
                colour: QH_MP3_color,
                extensions: ['shape_statement']
            });
        }
    };

    //数管显示
    Blockly.Blocks.qdp_esp32_display = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_display,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SMG_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }, 
                    {
                        type: 'field_dropdown',
                        name: 'PIN2',
                        options: [[Blockly.Msg.qdp_esp32_display_no,'1'],[Blockly.Msg.qdp_esp32_display_no2,'0']]
                    }, 
                    {
                        type: 'input_value',
                        name: 'VALUE'
                    }       
                ],
                "tooltip": "显示数字与字母",
                colour: QH_SMG_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //数码管清屏
    Blockly.Blocks.qdp_esp32_display_clear = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_display_clear,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SMG_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }     
                ],
                "tooltip": "数码管清屏",
                colour: QH_SMG_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //关闭数码管
    Blockly.Blocks.qdp_esp32_displayoff = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_displayoff,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SMG_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pinn',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }     
                ],
                "tooltip": "关闭数码管",
                colour: QH_SMG_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //显示-OLED-初始化
    Blockly.Blocks.esp32_oled_init = {
        init: function() {
            this.jsonInit({
              message0: '%1',
              message1: Blockly.Msg.esp32_oled_init, 
              args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
              args1: [
                {
                    type: 'field_dropdown',
                    name: 'PIN',
                    options: qdprobotESP32_BOTH_PIN_OLEDOutput_Dropdown
                }

              ],
              "tooltip": "显示-OLED-初始化",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

    //显示-OLED-刷新页面
    Blockly.Blocks.esp32_oled_page = {
        init: function() {
            this.jsonInit({
              message0: Blockly.Msg.esp32_oled_page,
              message1: "%1", // Statement
              args0: [
                {
                    type: 'field_image',
                    src: QH_OLED_ICO,
                    width: 40,
                    height: 40
                }
              ],
              args1: [
                {
                  "type": "input_statement",
                  "name": "DO"
                }
              ],
              "tooltip": "显示-OLED-刷新页面",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

    //显示-OLED-设置英文字体
    Blockly.Blocks.esp32_oled_set_EN_Font = {
        init: function() {
            this.jsonInit({
              message0: '%1',
              message1: Blockly.Msg.esp32_oled_set_EN_Font, 
              args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
              args1: [
                {
                    type: 'field_dropdown',
                    name: 'FONT_NAME',
                    options: EN_FONT_NAME
                },
                {
                    type: 'field_dropdown',
                    name: 'FONT_SIZE',
                    options: EN_FONT_SIZE
                },
                {
                    type: 'field_dropdown',
                    name: 'FONT_STYLE',
                    options: EN_FONT_STYLE
                }

              ],
              "tooltip": "设置英文字体",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

    //显示-OLED-设置英文字体
    Blockly.Blocks.esp32_oled_set_CN_Font = {
        init: function() {
            this.jsonInit({
              message0: '%1',
              message1: Blockly.Msg.esp32_oled_set_CN_Font, 
              args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
              args1: [
                {
                    type: 'field_dropdown',
                    name: 'FONT_NAME',
                    options: [
                    [Blockly.Msg.OLED_FONT_chinese1, "_t_chinese1"],
                    [Blockly.Msg.OLED_FONT_chinese2, "_t_chinese2"],
                    [Blockly.Msg.OLED_FONT_chinese3, "_t_chinese3"],
                    [Blockly.Msg.OLED_FONT_gb2312a, "_t_gb2312a"],
                    [Blockly.Msg.OLED_FONT_gb2312b, "_t_gb2312b"],
                    [Blockly.Msg.OLED_FONT_gb2312, "_t_gb2312"],
                ]
                },
                {
                    type: 'field_dropdown',
                    name: 'FONT_SIZE',
                    options: CN_FONT_SIZE
                }

              ],
              "tooltip": "设置中文字体",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

    //显示-OLED-显示字符串
    Blockly.Blocks.esp32_oled_print = {
        init: function() {
            this.jsonInit({
              message0: '%1',
              message1: Blockly.Msg.esp32_oled_print, 
              args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
              args1: [
                    {
                        type: 'input_value',
                        name: 'POS_X'
                    },
                    {
                        type: 'input_value',
                        name: 'POS_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    } 
              ],
              "tooltip": "显示字符串",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

     //取模工具设置部分
    Blockly.Blocks.tool_modulus = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.tool_modulus,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'bitmap_formats',
                        options: [["阴码","1"],["阳码","2"]]
                    }, 
                    {
                        type: 'field_dropdown',
                        name: 'modulus_way',
                        options: [["逐列式","1"],["逐行式","2"],["列行式","3"],["行列式","4"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'modulus_direction',
                        options: [["顺向(高位在前)","1"],["逆向(低位在前)","2"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'hz_sharp',
                        options: [["华文黑体","STHeiti"],["华文楷体","STKaiti"],["华文细黑","STXihei"],["华文宋体","STSong"],["华文中宋","STZhongsong"],["华文仿宋","STFangsong"],["华文彩云","STCaiyun"],["华文琥珀","STHupo"],["华文隶书","STLiti"],["华文行楷","STXingkai"],["华文新魏","STXinwei"],["黑体","simHei"],["宋体","simSun"],["新宋体","NSimSun"],["仿宋","FangSong"],["楷体","KaiTi"],["仿宋_GB2312","FangSong_GB2312"],["楷体_GB2312","KaiTi_GB2312"],["隶书","LiSu"],["幼圆","YouYuan"],["新细明体","PMingLiU"],["细明体","MingLiU"],["标楷体","DFKai-SB"],["微软正黑体","Microsoft JhengHei"],["微软雅黑体","Microsoft YaHei"]]
                    },    
                    {
                        type: 'input_value',
                        name: 'hz_line_height'
                    },
                    {
                        type: 'input_value',
                        name: 'bitmap_width'
                    },
                    {
                        type: 'input_value',
                        name: 'bitmap_height'
                    },
                    {
                        type: 'input_value',
                        name: 'input_data'
                    }
                ],
                "tooltip": "取模工具设置部分",
                colour: QH_OLED_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //取模工具显示数据部分
    Blockly.Blocks.tool_modulus_show = {
        init: function() {
            this.jsonInit({
              message0: '%1',
              message1: Blockly.Msg.tool_modulus_show, 
              args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
              args1: [
                {
                    type: 'input_value',
                    name: 'VAR'
                },
                {
                    type: 'field_label_serializable',
                    name: 'x'
                },
                {
                    type: "field_checkbox",
                    name: "save_hz",
                    checked: true
                },
                {
                    type: 'input_value',
                    name: 'input_data'
                }
              ],
              "tooltip": "取模工具显示数据部分",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

    //OLED清屏
    Blockly.Blocks.esp32_oled_clear = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_clear,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [   
                ],
                "tooltip": "OLED清屏",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //OLED背光亮度
    Blockly.Blocks.esp32_u8g2_setContrast = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_u8g2_setContrast,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'Contrast'
                    }       
                ],
                "tooltip": "OLED背光亮度",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //OLED显示内置图片
    Blockly.Blocks.esp32_oled_face = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_face,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [                   
                    {
                        type: 'input_value',
                        name: 'POS_X'
                    },
                    {
                        type: 'input_value',
                        name: 'POS_Y'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'FACE_IMAGE',
                        options:[
[{ 'src': QH_ANGRY_ICO, 'width': 35, 'height': 25, 'alt': 'Angry' }, 'Angry,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x01,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x07,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xB8,0x1F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x3E,0x00,0x38,0x7F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x80,0x3F,0x00,0x38,0xFC,0x01,0x00,0xE0,0x00,0x0C,0x00,0x00,0xE0,0x3F,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0x00,0x00,0xF8,0x31,0x00,0x38,0xC0,0x1F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x7E,0x30,0x00,0x38,0x00,0x7F,0x00,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xE0,0x07,0x30,0x00,0x38,0x00,0xF0,0x07,0xE0,0x00,0x0C,0x00,0xF8,0x01,0x30,0x00,0x38,0x00,0xE0,0x1F,0xE0,0x00,0x0C,0x00,0xFE,0x00,0x30,0x00,0x38,0x00,0xF0,0x7F,0xE0,0x00,0x0C,0x80,0x3F,0x00,0x30,0x00,0x38,0x00,0xF8,0xFF,0xE1,0x00,0x0C,0xE0,0x6F,0x01,0x30,0x00,0x38,0x00,0xFC,0xF9,0xE7,0x00,0x0C,0xF8,0x4F,0x00,0x30,0x00,0x38,0x00,0xFD,0xDD,0xFF,0x00,0x0C,0xFE,0xF7,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFF,0x00,0x8C,0xFF,0xFF,0x02,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFC,0x00,0xFC,0xFF,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xF0,0x00,0xFC,0xF5,0xFF,0x02,0x30,0x00,0x38,0x00,0xFC,0x1F,0xE0,0x00,0x7C,0xF0,0xFF,0x00,0x30,0x00,0x38,0x00,0xFD,0x5F,0xE0,0x00,0x1C,0xE0,0x7F,0x00,0x38,0x00,0x70,0x00,0xF8,0x0F,0x70,0x00,0x1C,0xE8,0x7F,0x01,0x38,0x00,0x70,0x00,0xF0,0x07,0x70,0x00,0x3C,0xC0,0x3F,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x01,0x78,0x00,0x38,0x20,0x4F,0x00,0x1C,0x00,0xE0,0x01,0x20,0x04,0x3C,0x00,0x78,0x80,0x10,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_AWAKE_ICO, 'width': 35, 'height': 25, 'alt': 'Awake' }, 'Awake,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x01,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x07,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xB8,0x1F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x3E,0x00,0x38,0x7F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x80,0x3F,0x00,0x38,0xFC,0x01,0x00,0xE0,0x00,0x0C,0x00,0x00,0xE0,0x3F,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0x00,0x00,0xF8,0x31,0x00,0x38,0xC0,0x1F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x7E,0x30,0x00,0x38,0x00,0x7F,0x00,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xE0,0x07,0x30,0x00,0x38,0x00,0xF0,0x07,0xE0,0x00,0x0C,0x00,0xF8,0x01,0x30,0x00,0x38,0x00,0xE0,0x1F,0xE0,0x00,0x0C,0x00,0xFE,0x00,0x30,0x00,0x38,0x00,0xF0,0x7F,0xE0,0x00,0x0C,0x80,0x3F,0x00,0x30,0x00,0x38,0x00,0xF8,0xFF,0xE1,0x00,0x0C,0xE0,0x6F,0x01,0x30,0x00,0x38,0x00,0xFC,0xF9,0xE7,0x00,0x0C,0xF8,0x4F,0x00,0x30,0x00,0x38,0x00,0xFD,0xDD,0xFF,0x00,0x0C,0xFE,0xF7,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFF,0x00,0x8C,0xFF,0xFF,0x02,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFC,0x00,0xFC,0xFF,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xF0,0x00,0xFC,0xF5,0xFF,0x02,0x30,0x00,0x38,0x00,0xFC,0x1F,0xE0,0x00,0x7C,0xF0,0xFF,0x00,0x30,0x00,0x38,0x00,0xFD,0x5F,0xE0,0x00,0x1C,0xE0,0x7F,0x00,0x38,0x00,0x70,0x00,0xF8,0x0F,0x70,0x00,0x1C,0xE8,0x7F,0x01,0x38,0x00,0x70,0x00,0xF0,0x07,0x70,0x00,0x3C,0xC0,0x3F,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x01,0x78,0x00,0x38,0x20,0x4F,0x00,0x1C,0x00,0xE0,0x01,0x20,0x04,0x3C,0x00,0x78,0x80,0x10,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_BLACK_EYE_ICO, 'width': 35, 'height': 25, 'alt': 'Black_eye' }, 'Black_eye,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x01,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x07,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xB8,0x1F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x3E,0x00,0x38,0x7F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x80,0x3F,0x00,0x38,0xFC,0x01,0x00,0xE0,0x00,0x0C,0x00,0x00,0xE0,0x3F,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0x00,0x00,0xF8,0x31,0x00,0x38,0xC0,0x1F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x7E,0x30,0x00,0x38,0x00,0x7F,0x00,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xE0,0x07,0x30,0x00,0x38,0x00,0xF0,0x07,0xE0,0x00,0x0C,0x00,0xF8,0x01,0x30,0x00,0x38,0x00,0xE0,0x1F,0xE0,0x00,0x0C,0x00,0xFE,0x00,0x30,0x00,0x38,0x00,0xF0,0x7F,0xE0,0x00,0x0C,0x80,0x3F,0x00,0x30,0x00,0x38,0x00,0xF8,0xFF,0xE1,0x00,0x0C,0xE0,0x6F,0x01,0x30,0x00,0x38,0x00,0xFC,0xF9,0xE7,0x00,0x0C,0xF8,0x4F,0x00,0x30,0x00,0x38,0x00,0xFD,0xDD,0xFF,0x00,0x0C,0xFE,0xF7,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFF,0x00,0x8C,0xFF,0xFF,0x02,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFC,0x00,0xFC,0xFF,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xF0,0x00,0xFC,0xF5,0xFF,0x02,0x30,0x00,0x38,0x00,0xFC,0x1F,0xE0,0x00,0x7C,0xF0,0xFF,0x00,0x30,0x00,0x38,0x00,0xFD,0x5F,0xE0,0x00,0x1C,0xE0,0x7F,0x00,0x38,0x00,0x70,0x00,0xF8,0x0F,0x70,0x00,0x1C,0xE8,0x7F,0x01,0x38,0x00,0x70,0x00,0xF0,0x07,0x70,0x00,0x3C,0xC0,0x3F,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x01,0x78,0x00,0x38,0x20,0x4F,0x00,0x1C,0x00,0xE0,0x01,0x20,0x04,0x3C,0x00,0x78,0x80,0x10,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_BOTTOM_LEFT_ICO, 'width': 35, 'height': 25, 'alt': 'Bottom_left' }, 'Bottom_left,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x40,0x01,0x00,0xE0,0x00,0x0C,0xA0,0x00,0x00,0x30,0x00,0x38,0x08,0x08,0x00,0xE0,0x00,0x0C,0x04,0x02,0x00,0x30,0x00,0x38,0xE0,0x13,0x00,0xE0,0x00,0x0C,0xF8,0x01,0x00,0x30,0x00,0x38,0xFA,0x0F,0x00,0xE0,0x00,0x0C,0xFC,0x03,0x00,0x30,0x00,0x38,0xF8,0x19,0x00,0xE0,0x00,0x8C,0xFE,0x16,0x00,0x30,0x00,0x38,0xFD,0x59,0x00,0xE0,0x00,0x0C,0x7F,0x0E,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x0C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x4C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x0C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x4C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFD,0x5F,0x00,0xE0,0x00,0x0C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFC,0x0F,0x00,0xE0,0x00,0x8C,0xFE,0x17,0x00,0x30,0x00,0x38,0xFA,0x2F,0x00,0xE0,0x00,0x0C,0xFC,0x03,0x00,0x30,0x00,0x38,0xE0,0x03,0x00,0xE0,0x00,0x0C,0xF8,0x01,0x00,0x30,0x00,0x38,0x08,0x08,0x00,0xE0,0x00,0x1C,0x04,0x02,0x00,0x38,0x00,0x70,0x40,0x01,0x00,0x70,0x00,0x1C,0x50,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,'],
[{ 'src':QH_BOTTOM_RIGHT_ICO , 'width': 35, 'height': 25, 'alt': 'Bottom_right' }, 'Bottom_right,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x14,0xE0,0x00,0x0C,0x00,0x00,0x0A,0x30,0x00,0x38,0x00,0x80,0x80,0xE0,0x00,0x0C,0x00,0x40,0x20,0x30,0x00,0x38,0x00,0x00,0x3E,0xE1,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xA0,0xFF,0xE0,0x00,0x0C,0x00,0xC0,0x3F,0x30,0x00,0x38,0x00,0x80,0x9F,0xE1,0x00,0x0C,0x00,0xE8,0x6F,0x31,0x00,0x38,0x00,0xD0,0x9F,0xE5,0x00,0x0C,0x00,0xF0,0xE7,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xD0,0xFF,0xE5,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xC0,0xFF,0xE0,0x00,0x0C,0x00,0xE8,0x7F,0x31,0x00,0x38,0x00,0xA0,0xFF,0xE2,0x00,0x0C,0x00,0xC0,0x3F,0x30,0x00,0x38,0x00,0x00,0x3E,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0x80,0x80,0xE0,0x00,0x1C,0x00,0x40,0x20,0x38,0x00,0x70,0x00,0x00,0x14,0x70,0x00,0x1C,0x00,0x00,0x05,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src':QH_CRAZY1_ICO, 'width': 35, 'height': 25, 'alt': 'Crazy_1' }, 'Crazy_1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x14,0xE0,0x00,0x0C,0x00,0x00,0x0A,0x30,0x00,0x38,0x00,0x80,0x80,0xE0,0x00,0x0C,0x00,0x40,0x20,0x30,0x00,0x38,0x00,0x00,0x3E,0xE1,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xA0,0xFF,0xE0,0x00,0x0C,0x00,0xC0,0x3F,0x30,0x00,0x38,0x00,0x80,0x9F,0xE1,0x00,0x0C,0x00,0xE8,0x6F,0x31,0x00,0x38,0x00,0xD0,0x9F,0xE5,0x00,0x0C,0x00,0xF0,0xE7,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xD0,0xFF,0xE5,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xC0,0xFF,0xE0,0x00,0x0C,0x00,0xE8,0x7F,0x31,0x00,0x38,0x00,0xA0,0xFF,0xE2,0x00,0x0C,0x00,0xC0,0x3F,0x30,0x00,0x38,0x00,0x00,0x3E,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0x80,0x80,0xE0,0x00,0x1C,0x00,0x40,0x20,0x38,0x00,0x70,0x00,0x00,0x14,0x70,0x00,0x1C,0x00,0x00,0x05,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_CRAZY2_ICO, 'width': 35, 'height': 25, 'alt': 'Crazy_2' }, 'Crazy_2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x20,0x04,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xC8,0x11,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xE0,0x0F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFA,0x5B,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xF8,0x13,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFC,0x3D,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFD,0xBF,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFC,0x3F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFD,0xBF,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFC,0x3F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xF8,0x1F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xFA,0x5F,0x30,0x00,0x38,0x00,0x05,0x00,0xE0,0x00,0x0C,0x00,0xF0,0x0F,0x30,0x00,0x38,0x20,0x20,0x00,0xE0,0x00,0x0C,0x00,0xC8,0x13,0x30,0x00,0x38,0x80,0x4F,0x00,0xE0,0x00,0x0C,0x00,0x20,0x04,0x30,0x00,0x38,0xE8,0x3F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xE0,0x67,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF4,0x67,0x01,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF8,0xFF,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF8,0xFF,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF8,0xFF,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF8,0xFF,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF4,0x7F,0x01,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xF0,0x3F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xE8,0xBF,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x80,0x0F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x20,0x20,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x05,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_DISAPPOINTED_ICO, 'width': 35, 'height': 25, 'alt': 'Disappointed' }, 'Disappointed,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0xF8,0x1F,0x00,0xE0,0x3F,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x7C,0x3C,0x00,0xF0,0x78,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x3E,0x38,0x00,0x78,0xF0,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x1F,0x70,0x00,0x38,0xE0,0x01,0x00,0x1C,0x00,0x70,0x00,0x80,0x0F,0x70,0x00,0x1C,0xC0,0x03,0x00,0x38,0x00,0x38,0x00,0xC0,0x07,0xE0,0x00,0x1C,0x80,0x07,0x00,0x38,0x00,0x38,0x00,0xE0,0x03,0xE0,0x00,0x1C,0x00,0x0F,0x00,0x38,0x00,0x38,0x00,0xF0,0x01,0xE0,0x00,0x0C,0x00,0x1E,0x00,0x30,0x00,0x38,0x00,0xF8,0x00,0xE0,0x00,0x0C,0x00,0x3C,0x00,0x30,0x00,0x38,0x00,0x7C,0x00,0xE0,0x00,0x0C,0x00,0x78,0x00,0x30,0x00,0x38,0x00,0x3E,0x02,0xE0,0x00,0x0C,0x00,0xF9,0x00,0x30,0x00,0x38,0x00,0xFF,0x04,0xE0,0x00,0x0C,0x00,0xFE,0x01,0x30,0x00,0x38,0x80,0xFF,0x03,0xE0,0x00,0x0C,0x00,0xFF,0x03,0x30,0x00,0x38,0xC0,0x7F,0x06,0xE0,0x00,0x0C,0xA0,0xBF,0x07,0x30,0x00,0x38,0xE0,0x7F,0x16,0xE0,0x00,0x0C,0xC0,0x9F,0x0F,0x30,0x00,0x38,0xF0,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x1F,0x30,0x00,0x38,0xF8,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x3F,0x30,0x00,0x38,0xFC,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x7B,0x30,0x00,0x38,0xBE,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0xFB,0x30,0x00,0x38,0x5F,0xFF,0x17,0xE0,0x00,0x0C,0xC0,0xFF,0xE3,0x31,0x00,0xB8,0x0F,0xFF,0x03,0xE0,0x00,0x0C,0xA0,0xFF,0xC5,0x33,0x00,0xF8,0x87,0xFE,0x0B,0xE0,0x00,0x0C,0x00,0xFF,0x80,0x3F,0x00,0xF8,0x03,0xF8,0x00,0xE0,0x00,0x0C,0x00,0x7E,0x00,0x3F,0x00,0xF8,0x01,0x02,0x02,0xE0,0x00,0x0C,0x00,0x81,0x00,0x3E,0x00,0xF8,0x00,0x50,0x00,0xE0,0x00,0x0C,0x00,0x14,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_DIZZY_ICO, 'width': 35, 'height': 25, 'alt': 'Dizzy' }, 'Dizzy,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x0C,0x00,0xE0,0x00,0x0C,0x00,0x03,0x00,0x30,0x00,0x38,0x00,0x0F,0x00,0xE0,0x00,0x0C,0xC0,0x03,0x00,0x30,0x00,0x38,0x80,0x03,0x00,0xE0,0x00,0x0C,0xE0,0x00,0x00,0x30,0x00,0x38,0xC0,0xF9,0x07,0xE0,0x00,0x0C,0x70,0xFE,0x01,0x30,0x00,0x38,0xE0,0x3C,0x1F,0xE0,0x00,0x0C,0x38,0xCF,0x07,0x30,0x00,0x38,0x60,0x06,0x38,0xE0,0x00,0x0C,0x98,0x01,0x0E,0x30,0x00,0x38,0x30,0xE3,0x33,0xE0,0x00,0x0C,0xCC,0xF8,0x0C,0x30,0x00,0x38,0x30,0xF3,0x67,0xE0,0x00,0x0C,0xCC,0xFC,0x19,0x30,0x00,0x38,0xB0,0x19,0x6E,0xE0,0x00,0x0C,0x6C,0x86,0x1B,0x30,0x00,0x38,0xB0,0xD9,0xCC,0xE0,0x00,0x0C,0x6C,0x36,0x33,0x30,0x00,0x38,0xB0,0xD9,0xCD,0xE0,0x00,0x0C,0x6C,0x76,0x33,0x30,0x00,0x38,0xB0,0xF9,0xCD,0xE0,0x00,0x0C,0x6C,0x7E,0x33,0x30,0x00,0x38,0x30,0xF3,0x6C,0xE0,0x00,0x0C,0xCC,0x3C,0x1B,0x30,0x00,0x38,0x70,0x07,0x66,0xE0,0x00,0x0C,0xDC,0x81,0x19,0x30,0x00,0x38,0x60,0x9E,0x77,0xE0,0x00,0x0C,0x98,0xE7,0x1D,0x30,0x00,0x38,0xC0,0xF8,0x31,0xE0,0x00,0x0C,0x30,0x7E,0x0C,0x30,0x00,0x38,0xC0,0x01,0x18,0xE0,0x00,0x0C,0x70,0x00,0x06,0x30,0x00,0x38,0x00,0x0F,0x0E,0xE0,0x00,0x0C,0xC0,0x83,0x03,0x30,0x00,0x38,0x00,0xFE,0x07,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0x38,0x00,0xF0,0x00,0xE0,0x00,0x0C,0x00,0x3C,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_DOWN_ICO, 'width': 35, 'height': 25, 'alt': 'Down' }, 'Down,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x50,0x00,0xE0,0x00,0x0C,0x00,0x14,0x00,0x30,0x00,0x38,0x00,0x02,0x02,0xE0,0x00,0x0C,0x00,0x81,0x00,0x30,0x00,0x38,0x00,0xF9,0x00,0xE0,0x00,0x0C,0x00,0x7E,0x00,0x30,0x00,0x38,0x00,0xFE,0x0B,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0x7F,0x06,0xE0,0x00,0x0C,0xA0,0xBF,0x05,0x30,0x00,0x38,0x40,0x7F,0x16,0xE0,0x00,0x0C,0xC0,0x9F,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x00,0xFE,0x07,0xE0,0x00,0x1C,0xA0,0xFF,0x05,0x38,0x00,0x70,0x80,0xFE,0x0B,0x70,0x00,0x1C,0x00,0xFF,0x00,0x38,0x00,0x70,0x00,0xF8,0x00,0x70,0x00,0x3C,0x00,0x7E,0x00,0x3C,0x00,0xF0,0x00,0x02,0x02,0x78,0x00,0x38,0x00,0x81,0x00,0x1C,0x00,0xE0,0x01,0xA8,0x00,0x3C,0x00,0x78,0x00,0x28,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_EVIL_ICO, 'width': 35, 'height': 25, 'alt': 'Evil' }, 'Evil,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x0F,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0xC0,0x0F,0x00,0xE0,0x1F,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0xE0,0x1F,0x00,0x70,0x3C,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x70,0x1C,0x00,0x70,0x78,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x3C,0x38,0x00,0x38,0xF0,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x1E,0x38,0x00,0x38,0xE0,0x01,0x00,0xE0,0x00,0x1C,0x00,0x00,0x0F,0x38,0x00,0x38,0x80,0x07,0x00,0xE0,0x00,0x0C,0x00,0x80,0x07,0x30,0x00,0x38,0x00,0x0F,0x00,0xE0,0x00,0x0C,0x00,0xC0,0x03,0x30,0x00,0x38,0x00,0x1E,0x00,0xE0,0x00,0x0C,0x00,0xE0,0x01,0x30,0x00,0x38,0x00,0x3C,0x00,0xE0,0x00,0x0C,0x00,0x70,0x00,0x30,0x00,0x38,0x00,0x78,0x00,0xE0,0x00,0x0C,0x00,0x7C,0x00,0x30,0x00,0x38,0x00,0xF2,0x00,0xE0,0x00,0x0C,0x00,0x3E,0x01,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x07,0xE0,0x00,0x0C,0x80,0xBF,0x05,0x30,0x00,0x38,0x00,0x7F,0x0F,0xE0,0x00,0x0C,0xC0,0x3F,0x01,0x30,0x00,0x38,0x40,0x7F,0x1F,0xE0,0x00,0x0C,0xE0,0xDF,0x03,0x30,0x00,0x38,0x80,0xFF,0x3F,0xE0,0x00,0x0C,0xF8,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x7F,0xE0,0x00,0x0C,0xFC,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0xFF,0xE0,0x00,0x0C,0xFE,0xFF,0x0B,0x30,0x00,0x38,0x00,0xFF,0xC7,0xE3,0x00,0x0C,0xCF,0xFF,0x03,0x30,0x00,0x38,0x40,0xFF,0x97,0xE7,0x00,0x8C,0x87,0xFF,0x01,0x30,0x00,0x38,0x00,0xFE,0x03,0xEF,0x00,0xCC,0xA3,0xFF,0x05,0x30,0x00,0x38,0x00,0xFC,0x01,0xFE,0x00,0xFC,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xFC,0x00,0x7C,0x80,0x3C,0x01,0x30,0x00,0x38,0x00,0x08,0x01,0xF8,0x00,0x3C,0x00,0x42,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_HURT_ICO, 'width': 35, 'height': 25, 'alt': 'Hurt' }, 'Hurt,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xF0,0x00,0x1C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xFC,0x00,0x7C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xFF,0x00,0xFC,0x01,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0xC0,0xFF,0x00,0xFC,0x07,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0xF0,0xE7,0x00,0x8C,0x1F,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0xFC,0xE1,0x00,0x0C,0x7E,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x7F,0xE0,0x00,0x0C,0xF8,0x01,0x00,0x30,0x00,0x38,0x00,0xC0,0x1F,0xE0,0x00,0x0C,0xE0,0x07,0x00,0x30,0x00,0x38,0x00,0xF0,0x0F,0xE0,0x00,0x0C,0xC0,0x1F,0x00,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x20,0x7F,0x00,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x01,0x30,0x00,0x38,0xC0,0xFF,0x0F,0xE0,0x00,0x0C,0xE8,0xFF,0x07,0x30,0x00,0x38,0xF0,0xFF,0x19,0xE0,0x00,0x0C,0xE0,0xCF,0x1F,0x30,0x00,0x38,0xFC,0xFD,0x5D,0xE0,0x00,0x0C,0xF0,0xF7,0x7E,0x30,0x00,0x38,0xFF,0xFE,0x3F,0xE0,0x00,0x0C,0xF4,0xFF,0xFA,0x31,0x00,0xB8,0x1F,0xFE,0x3F,0xE0,0x00,0x0C,0xF0,0xFF,0xE0,0x37,0x00,0xF8,0x07,0xFE,0x3F,0xE0,0x00,0x0C,0xF4,0xFF,0x82,0x3F,0x00,0xF8,0x01,0xFC,0x1F,0xE0,0x00,0x0C,0xF0,0xFF,0x00,0x3E,0x00,0x78,0x00,0xFD,0x5F,0xE0,0x00,0x1C,0xE0,0x7F,0x00,0x38,0x00,0x70,0x00,0xF8,0x0F,0x70,0x00,0x1C,0xE8,0x7F,0x01,0x38,0x00,0x70,0x00,0xF0,0x07,0x70,0x00,0x3C,0xC0,0x3F,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x01,0x78,0x00,0x38,0x20,0x4F,0x00,0x1C,0x00,0xE0,0x01,0x20,0x04,0x3C,0x00,0x78,0x80,0x10,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_KNOCKED_OUT_ICO, 'width': 35, 'height': 25, 'alt': 'Knocked_out' }, 'Knocked_out,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0xF0,0xFF,0x7F,0xE0,0x00,0x0C,0xF8,0xFF,0x1F,0x30,0x00,0x38,0xF0,0xFF,0x7F,0xE0,0x00,0x0C,0xFC,0xFF,0x3F,0x30,0x00,0x38,0xF0,0xFF,0x7F,0xE0,0x00,0x0C,0xFC,0xFF,0x1F,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_LOVE_ICO, 'width': 35, 'height': 25, 'alt': 'Love' }, 'Love,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0xE0,0x07,0x3F,0xE0,0x00,0x0C,0xF0,0x81,0x0F,0x30,0x00,0x38,0xF0,0x8B,0x5F,0xE0,0x00,0x0C,0xF8,0xC2,0x1F,0x30,0x00,0x38,0xF8,0xD7,0xBF,0xE0,0x00,0x0C,0xFC,0xE5,0x2F,0x30,0x00,0x38,0xF8,0xFF,0xBF,0xE0,0x00,0x0C,0xFE,0xFF,0x5F,0x30,0x00,0x38,0xFC,0xFF,0x7F,0xE0,0x00,0x0C,0xFE,0xFF,0x5F,0x30,0x00,0x38,0xFC,0xFF,0xFF,0xE1,0x00,0x0C,0xFE,0xFF,0x7F,0x30,0x00,0x38,0xFC,0xFF,0xFF,0xE1,0x00,0x0C,0xFE,0xFF,0x7F,0x30,0x00,0x38,0xFC,0xFF,0xFF,0xE1,0x00,0x0C,0xFE,0xFF,0x7F,0x30,0x00,0x38,0xF8,0xFF,0xFF,0xE0,0x00,0x0C,0xFE,0xFF,0x7F,0x30,0x00,0x38,0xF8,0xFF,0xFF,0xE0,0x00,0x0C,0xFE,0xFF,0x7F,0x30,0x00,0x38,0xF8,0xFF,0xFF,0xE0,0x00,0x0C,0xFC,0xFF,0x3F,0x30,0x00,0x38,0xF0,0xFF,0x7F,0xE0,0x00,0x0C,0xF8,0xFF,0x1F,0x30,0x00,0x38,0xC0,0xFF,0x1F,0xE0,0x00,0x0C,0xF0,0xFF,0x0F,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xE0,0xFF,0x07,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0x7E,0x00,0x30,0x00,0x38,0x00,0xF8,0x00,0xE0,0x00,0x0C,0x00,0x3C,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x38,0x00,0x20,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_Middle_LEFT_ICO, 'width': 35, 'height': 25, 'alt': 'Middle_left' }, 'Middle_left,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x10,0x02,0x00,0xE0,0x00,0x0C,0x04,0x01,0x00,0x30,0x00,0x38,0xC0,0x01,0x00,0xE0,0x00,0x0C,0xE0,0x04,0x00,0x30,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0xFC,0x01,0x00,0x30,0x00,0x38,0xF8,0x0F,0x00,0xE0,0x00,0x8C,0xFE,0x17,0x00,0x30,0x00,0x38,0xFC,0x19,0x00,0xE0,0x00,0x0C,0xFE,0x04,0x00,0x30,0x00,0x38,0xFD,0x5D,0x00,0xE0,0x00,0x4C,0x7F,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x0C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x4C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x0C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFC,0x1F,0x00,0xE0,0x00,0x4C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFD,0x5F,0x00,0xE0,0x00,0x0C,0xFE,0x07,0x00,0x30,0x00,0x38,0xF8,0x0F,0x00,0xE0,0x00,0x8C,0xFE,0x17,0x00,0x30,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0xFC,0x03,0x00,0x30,0x00,0x38,0xC0,0x01,0x00,0xE0,0x00,0x0C,0xF2,0x04,0x00,0x30,0x00,0x38,0x10,0x02,0x00,0xE0,0x00,0x0C,0x08,0x01,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_Middle_RIGHT_ICO, 'width': 35, 'height': 25, 'alt': 'Middle_right' }, 'Middle_right,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x21,0xE0,0x00,0x0C,0x00,0x40,0x10,0x30,0x00,0x38,0x00,0x00,0x1C,0xE0,0x00,0x0C,0x00,0x00,0x4E,0x30,0x00,0x38,0x00,0x00,0x7F,0xE0,0x00,0x0C,0x00,0xC0,0x1F,0x30,0x00,0x38,0x00,0x80,0xFF,0xE0,0x00,0x0C,0x00,0xE8,0x7F,0x31,0x00,0x38,0x00,0xC0,0x9F,0xE1,0x00,0x0C,0x00,0xE0,0x4F,0x30,0x00,0x38,0x00,0xD0,0xDF,0xE5,0x00,0x0C,0x00,0xF0,0xF7,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x32,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x30,0x00,0x38,0x00,0xC0,0xFF,0xE1,0x00,0x0C,0x00,0xF0,0xFF,0x32,0x00,0x38,0x00,0xD0,0xFF,0xE5,0x00,0x0C,0x00,0xE0,0x7F,0x30,0x00,0x38,0x00,0x80,0xFF,0xE0,0x00,0x0C,0x00,0xE8,0x7F,0x31,0x00,0x38,0x00,0x00,0x7F,0xE0,0x00,0x0C,0x00,0xC0,0x3F,0x30,0x00,0x38,0x00,0x00,0x1C,0xE0,0x00,0x0C,0x00,0x20,0x4F,0x30,0x00,0x38,0x00,0x00,0x21,0xE0,0x00,0x0C,0x00,0x80,0x10,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_NEUTRAL_ICO, 'width': 35, 'height': 25, 'alt': 'Neutral' }, 'Neutral,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x84,0x00,0xE0,0x00,0x0C,0x00,0x41,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x38,0x01,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0x7F,0x00,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0xA0,0xFF,0x05,0x30,0x00,0x38,0x00,0x7F,0x06,0xE0,0x00,0x0C,0x80,0x3F,0x01,0x30,0x00,0x38,0x40,0x7F,0x17,0xE0,0x00,0x0C,0xC0,0xDF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0xA0,0xFF,0x05,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x80,0x3C,0x01,0x30,0x00,0x38,0x00,0x84,0x00,0xE0,0x00,0x0C,0x00,0x42,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_NUCLEAR_ICO, 'width': 35, 'height': 25, 'alt': 'Nuclear' }, 'Nuclear,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x78,0x00,0xE0,0x00,0x0C,0x00,0x3C,0x00,0x30,0x00,0x38,0x00,0xCF,0x03,0xE0,0x00,0x0C,0x80,0xE7,0x01,0x30,0x00,0x38,0xC0,0x01,0x0C,0xE0,0x00,0x0C,0xE0,0x00,0x06,0x30,0x00,0x38,0x60,0x00,0x10,0xE0,0x00,0x0C,0x30,0x00,0x08,0x30,0x00,0x38,0xB0,0x01,0x24,0xE0,0x00,0x0C,0xD8,0x00,0x12,0x30,0x00,0x38,0xD8,0x01,0x4E,0xE0,0x00,0x0C,0xEC,0x00,0x27,0x30,0x00,0x38,0xC8,0x03,0xDF,0xE0,0x00,0x0C,0xE4,0x81,0x6F,0x30,0x00,0x38,0xEC,0x07,0xBF,0xE0,0x00,0x0C,0xF6,0x83,0x5F,0x30,0x00,0x38,0xF4,0x87,0xBF,0xE1,0x00,0x0C,0xFA,0xC3,0xDF,0x30,0x00,0x38,0xF4,0x87,0x3F,0xE1,0x00,0x0C,0xFA,0xC3,0x9F,0x30,0x00,0x38,0xF6,0x27,0x7F,0xE1,0x00,0x0C,0xFB,0x93,0xBF,0x30,0x00,0x38,0xF2,0x73,0x7F,0xE1,0x00,0x0C,0xF9,0xB9,0xBF,0x30,0x00,0x38,0x02,0x78,0x00,0xE1,0x00,0x0C,0x01,0x3C,0x80,0x30,0x00,0x38,0x02,0x30,0x00,0xE1,0x00,0x0C,0x01,0x18,0x80,0x30,0x00,0x38,0x04,0x00,0x00,0xE1,0x00,0x0C,0x02,0x00,0x80,0x30,0x00,0x38,0x04,0x70,0x00,0xE1,0x00,0x0C,0x02,0x38,0x80,0x30,0x00,0x38,0x04,0xF8,0x80,0xE1,0x00,0x0C,0x02,0x7C,0xC0,0x30,0x00,0x38,0x08,0xFC,0x80,0xE0,0x00,0x0C,0x04,0x7E,0x40,0x30,0x00,0x38,0x18,0xFC,0x41,0xE0,0x00,0x0C,0x0C,0xFE,0x20,0x30,0x00,0x38,0x10,0xFE,0x61,0xE0,0x00,0x0C,0x08,0xFF,0x30,0x30,0x00,0x38,0x20,0xFE,0x33,0xE0,0x00,0x0C,0x10,0xFF,0x19,0x30,0x00,0x38,0xC0,0x78,0x18,0xE0,0x00,0x0C,0x60,0x3C,0x0C,0x30,0x00,0x38,0x80,0x03,0x06,0xE0,0x00,0x0C,0xC0,0x01,0x03,0x30,0x00,0x38,0x00,0xFE,0x01,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_PINCH_LEFT_ICO, 'width': 35, 'height': 25, 'alt': 'Pinch_left' }, 'Pinch_left,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xB8,0xFE,0xBD,0x00,0xE0,0x00,0x5C,0x7F,0x3F,0x00,0x38,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x4C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x0C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFC,0x1F,0x00,0xE0,0x00,0x4C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFD,0x5F,0x00,0xE0,0x00,0x0C,0xFE,0x07,0x00,0x30,0x00,0x38,0xF8,0x0F,0x00,0xE0,0x00,0x0C,0xFE,0x17,0x00,0x30,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0xFD,0x0B,0x00,0x30,0x00,0x38,0xC0,0x01,0x00,0xE0,0x00,0x0C,0xF0,0x00,0x00,0x30,0x00,0x38,0x18,0x06,0x00,0xE0,0x00,0x0C,0x0C,0x03,0x00,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_PINCH_MIDDLE_ICO, 'width': 35, 'height': 25, 'alt': 'Pinch_middle' }, 'Pinch_middle,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0xA0,0x7F,0x2F,0xE0,0x00,0x1C,0xD0,0xDF,0x0F,0x38,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0x80,0xFF,0x05,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x40,0xFF,0x02,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x3C,0x00,0x30,0x00,0x38,0x00,0x86,0x01,0xE0,0x00,0x0C,0x00,0xC3,0x00,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_PINCH_RIGHT_ICO, 'width': 35, 'height': 25, 'alt': 'Pinch_right' }, 'Pinch_right,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0xE8,0xDF,0xEB,0x00,0x1C,0x00,0xF4,0xF7,0x3A,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x32,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x30,0x00,0x38,0x00,0xC0,0xFF,0xE1,0x00,0x0C,0x00,0xF0,0xFF,0x32,0x00,0x38,0x00,0xD0,0xFF,0xE5,0x00,0x0C,0x00,0xE0,0x7F,0x30,0x00,0x38,0x00,0x80,0xFF,0xE0,0x00,0x0C,0x00,0xE0,0x7F,0x31,0x00,0x38,0x00,0x00,0x7F,0xE0,0x00,0x0C,0x00,0xD0,0xBF,0x30,0x00,0x38,0x00,0x00,0x1C,0xE0,0x00,0x0C,0x00,0x00,0x0F,0x30,0x00,0x38,0x00,0x80,0xC2,0xE0,0x00,0x0C,0x00,0xC0,0x30,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_TEAR_ICO, 'width': 35, 'height': 25, 'alt': 'Tear' }, 'Tear,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0xF0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0xFD,0x05,0xE0,0x00,0x1C,0x40,0x7F,0x02,0x38,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0x7F,0x06,0xE0,0x00,0x0C,0xA0,0xBF,0x05,0x30,0x00,0x38,0x40,0x7F,0x16,0xE0,0x00,0x0C,0xC0,0x9F,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x04,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x04,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x04,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x0C,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x0E,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x0E,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x1F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x80,0x3F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x80,0x6F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xC0,0x5F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xC0,0x7F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0xC0,0x7F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x80,0x7F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x3F,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x0E,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_TIRED_LEFT_ICO, 'width': 35, 'height': 25, 'alt': 'Tired_left' }, 'Tired_left,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0xFD,0x5D,0x00,0xE0,0x00,0x5C,0x7F,0x2E,0x00,0x38,0x00,0x38,0xFE,0x1F,0x00,0xE0,0x00,0x0C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x4C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x0C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xFE,0x3F,0x00,0xE0,0x00,0x4C,0xFF,0x2F,0x00,0x30,0x00,0x38,0xFD,0x5F,0x00,0xE0,0x00,0x0C,0xFF,0x0F,0x00,0x30,0x00,0x38,0xF8,0x1F,0x00,0xE0,0x00,0x9C,0xFE,0x17,0x00,0x38,0x00,0x70,0xFA,0x2F,0x00,0x70,0x00,0x1C,0xFC,0x03,0x00,0x38,0x00,0x70,0xE0,0x03,0x00,0x70,0x00,0x3C,0xF8,0x01,0x00,0x3C,0x00,0xF0,0x08,0x08,0x00,0x78,0x00,0x38,0x04,0x02,0x00,0x1C,0x00,0xE0,0xA1,0x02,0x00,0x3C,0x00,0x78,0xA0,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_TIRED_MIDDLE_ICO, 'width': 35, 'height': 25, 'alt': 'Tired_middle' }, 'Tired_middle,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x1C,0xD0,0xDF,0x0B,0x38,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x1C,0xA0,0xFF,0x05,0x38,0x00,0x70,0x00,0xFC,0x01,0x70,0x00,0x1C,0x00,0xFF,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x3C,0x80,0x3C,0x01,0x3C,0x00,0xF0,0x00,0x84,0x00,0x78,0x00,0x38,0x00,0x42,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_TIRED_RIGHT_ICO, 'width': 35, 'height': 25, 'alt': 'Tired_right' }, 'Tired_right,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0xD0,0xDF,0xE5,0x00,0x1C,0x00,0xF4,0xE7,0x3A,0x00,0x38,0x00,0xE0,0xFF,0xE1,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0xE0,0xFF,0xE3,0x00,0x0C,0x00,0xF4,0xFF,0x32,0x00,0x38,0x00,0xD0,0xFF,0xE5,0x00,0x0C,0x00,0xF0,0xFF,0x30,0x00,0x38,0x00,0x80,0xFF,0xE1,0x00,0x1C,0x00,0xE8,0x7F,0x39,0x00,0x70,0x00,0xA0,0xFF,0x72,0x00,0x1C,0x00,0xC0,0x3F,0x38,0x00,0x70,0x00,0x00,0x3E,0x70,0x00,0x3C,0x00,0x80,0x1F,0x3C,0x00,0xF0,0x00,0x80,0x80,0x78,0x00,0x38,0x00,0x40,0x20,0x1C,0x00,0xE0,0x01,0x00,0x14,0x3C,0x00,0x78,0x00,0x00,0x0A,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_TOXIC_ICO, 'width': 35, 'height': 25, 'alt': 'Toxic' }, 'Toxic,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x1C,0x00,0x30,0x00,0x38,0x00,0xFE,0x02,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0x80,0xFF,0x00,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x01,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0x23,0x0E,0xE0,0x00,0x0C,0xC0,0x18,0x03,0x30,0x00,0x38,0x80,0x23,0x0E,0xE0,0x00,0x0C,0xC0,0x10,0x03,0x30,0x00,0x38,0x00,0x73,0x06,0xE0,0x00,0x0C,0xC0,0x99,0x03,0x30,0x00,0x38,0x00,0x9F,0x07,0xE0,0x00,0x0C,0x80,0xE7,0x01,0x30,0x00,0x38,0x00,0x9E,0x03,0xE0,0x00,0x0C,0x00,0xE7,0x00,0x30,0x00,0x38,0x20,0xF8,0x40,0xE0,0x00,0x0C,0x18,0x7C,0x30,0x30,0x00,0x38,0xF0,0x51,0x78,0xE0,0x00,0x0C,0xFC,0x08,0x3C,0x30,0x00,0x38,0x30,0x0F,0xCF,0xE0,0x00,0x0C,0xCC,0x87,0x37,0x30,0x00,0x38,0x00,0x7C,0x02,0xE0,0x00,0x0C,0x00,0x3E,0x00,0x30,0x00,0x38,0xB0,0xC7,0x67,0xE0,0x00,0x0C,0xD8,0xF3,0x13,0x30,0x00,0x38,0xF0,0x03,0x7F,0xE0,0x00,0x0C,0xF8,0x81,0x3F,0x30,0x00,0x38,0x60,0x00,0x70,0xE0,0x00,0x0C,0x30,0x00,0x1C,0x30,0x00,0x38,0x60,0x00,0x30,0xE0,0x00,0x0C,0x10,0x00,0x18,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_UP_ICO, 'width': 35, 'height': 25, 'alt': 'Up' }, 'Up,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x84,0x00,0x38,0x00,0x78,0x00,0x41,0x00,0x1E,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x01,0x1C,0x00,0x70,0x00,0xFC,0x01,0x70,0x00,0x1C,0x00,0x7F,0x00,0x38,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x1C,0xA0,0xFF,0x05,0x38,0x00,0x38,0x00,0x7F,0x06,0xE0,0x00,0x1C,0x80,0x3F,0x01,0x38,0x00,0x38,0x40,0x7F,0x17,0xE0,0x00,0x0C,0xC0,0xDF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0xA0,0xFF,0x05,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x80,0x3C,0x01,0x30,0x00,0x38,0x00,0x84,0x00,0xE0,0x00,0x0C,0x00,0x42,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'],
[{ 'src': QH_WINKING_ICO, 'width': 35, 'height': 25, 'alt': 'Winking' }, 'Winking,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x84,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x7F,0x06,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x40,0x7F,0x17,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x84,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00']]
                    }         
                ],
                "tooltip": "OLED显示内置图片",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //显示-OLED-显示图像
    Blockly.Blocks.esp32_oled_showBitmap = {
        init: function() {
            this.jsonInit({
              message0: '%1',
              message1: Blockly.Msg.esp32_oled_showBitmap, 
              args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
              args1: [
                {
                    type: 'input_value',
                    name: 'START_X'
                },
                {
                    type: 'input_value',
                    name: 'START_Y'
                },
                {
                    type: 'input_value',
                    name: 'WIDTH'
                },
                {
                    type: 'input_value',
                    name: 'HEIGHT'
                },
                {
                    type: 'input_value',
                    name: 'bitmap_name'
                }

              ],
              "tooltip": "显示-OLED-显示图像",
              colour: QH_OLED_COLOR,
              extensions: ["shape_statement"]
            });
      }
    };

    //显示-OLED-画点
    Blockly.Blocks.esp32_oled_drawPixel = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawPixel,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'POS_X'
                    },
                    {
                        type: 'input_value',
                        name: 'POS_Y'
                    }
                ],
                "tooltip": "显示-OLED-画点",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画线
    Blockly.Blocks.esp32_oled_drawLine = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawLine,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'START_X'
                    },
                    {
                        type: 'input_value',
                        name: 'START_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'END_X'
                    },
                    {
                        type: 'input_value',
                        name: 'END_Y'
                    }     
                ],
                "tooltip": "显示-OLED-画线",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画直线
    Blockly.Blocks.esp32_oled_draw_Str_Line = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_draw_Str_Line,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'START_X'
                    },
                    {
                        type: 'input_value',
                        name: 'START_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'LENGTH'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[Blockly.Msg.QH_OLED_HOR, "H"],[Blockly.Msg.QH_OLED_VER, "V"]]
                    }   
                ],
                "tooltip": "显示-OLED-画直线",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画矩形
    Blockly.Blocks.esp32_oled_drawFrame = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawFrame,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[Blockly.Msg.QH_OLED_HOLLOW, "drawFrame"],[Blockly.Msg.QH_OLED_SOLID, "drawBox"]]
                    },
                    {
                        type: 'input_value',
                        name: 'D0_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D0_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'WIDTH'
                    },
                    {
                        type: 'input_value',
                        name: 'HEIGHT'
                    }  
                ],
                "tooltip": "显示-OLED-画矩形",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画圆角矩形
    Blockly.Blocks.esp32_oled_drawRFrame = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawRFrame,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[Blockly.Msg.QH_OLED_HOLLOW, "drawRFrame"],[Blockly.Msg.QH_OLED_SOLID, "drawRBox"]]
                    },
                    {
                        type: 'input_value',
                        name: 'D0_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D0_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'WIDTH'
                    },
                    {
                        type: 'input_value',
                        name: 'HEIGHT'
                    },
                    {
                        type: 'input_value',
                        name: 'RADIUS'
                    }    
                ],
                "tooltip": "显示-OLED-画圆角矩形",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画圆（空心，实心）
    Blockly.Blocks.esp32_oled_drawCircle = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawCircle,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[Blockly.Msg.QH_OLED_HOLLOW, "drawCircle"],[Blockly.Msg.QH_OLED_SOLID, "drawDisc"]]
                    },
                    {
                        type: 'input_value',
                        name: 'D0_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D0_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'RADIUS'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'OPT',
                        options: [[Blockly.Msg.QH_OLED_WHOLE_CICILE, "U8G2_DRAW_ALL"],[Blockly.Msg.QH_OLED_UP_R, "U8G2_DRAW_UPPER_RIGHT"],[Blockly.Msg.QH_OLED_UP_L, "U8G2_DRAW_UPPER_LEFT"],[Blockly.Msg.QH_OLED_LOW_R, "U8G2_DRAW_LOWER_RIGHT"],[Blockly.Msg.QH_OLED_LOW_L, "U8G2_DRAW_LOWER_LEFT"]]
                    }    
                ],
                "tooltip": "显示-OLED-画圆（空心，实心）",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画椭圆（空心，实心）
    Blockly.Blocks.esp32_oled_drawEllipse = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawEllipse,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [[Blockly.Msg.QH_OLED_HOLLOW, "drawEllipse"],[Blockly.Msg.QH_OLED_SOLID, "drawFilledEllipse"]]
                    },
                    {
                        type: 'input_value',
                        name: 'D0_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D0_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'RADIUS_X'
                    },
                    {
                        type: 'input_value',
                        name: 'RADIUS_Y'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'OPT',
                        options: [[Blockly.Msg.QH_OLED_WHOLE_CICILE, "U8G2_DRAW_ALL"],[Blockly.Msg.QH_OLED_UP_R, "U8G2_DRAW_UPPER_RIGHT"],[Blockly.Msg.QH_OLED_UP_L, "U8G2_DRAW_UPPER_LEFT"],[Blockly.Msg.QH_OLED_LOW_R, "U8G2_DRAW_LOWER_RIGHT"],[Blockly.Msg.QH_OLED_LOW_L, "U8G2_DRAW_LOWER_LEFT"]]
                    }    
                ],
                "tooltip": "显示-OLED-画椭圆（空心，实心）",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //显示-OLED-画三角
    Blockly.Blocks.esp32_oled_drawTriangle = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.esp32_oled_drawTriangle,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_OLED_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'D0_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D0_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'D1_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D1_Y'
                    },
                    {
                        type: 'input_value',
                        name: 'D2_X'
                    },
                    {
                        type: 'input_value',
                        name: 'D2_Y'
                    }
                    
                ],
                "tooltip": "显示-OLED-画三角",
                colour: QH_OLED_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //LCD初始化
    Blockly.Blocks.group_lcd_init2 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.group_lcd_init2,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options: [['1602', '16,2'], ['2004', '20,4']]
                    },
                    {
                        type: 'input_value',
                        name: 'VAR',
                        text: "mylcd"
                    },
                    {
                        type: 'input_value',
                        name: 'device',
                        text: "0x27"
                    },
                    {
                        type: 'field_dropdown',
                        name: 'SCL',
                        options: qdprobotESP32_LR_PIN_Input_Dropdown
                    },
                    {
                        type: 'field_dropdown',
                        name: 'SDA',
                        options: qdprobotESP32_LR_PIN_Input_Dropdown
                    }                           
                ],
                "tooltip": "LCD初始化",
                "inputsInline": false,
                colour:QH_LCD_COLOR,
                extensions: ['shape_statement']
            });
            this.setFieldValue("SCL", "SCL");
            this.setFieldValue("SDA", "SDA");
        }
    };
    //LCD打印
    Blockly.Blocks.group_lcd_print = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.group_lcd_print,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'VAR',
                        text: "mylcd"
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT',
                        text: "Line1"
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT2',
                        text: "Line2"
                    }                         
                ],
                "tooltip": "LCD打印",
                colour:QH_LCD_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //LCD打印2
    Blockly.Blocks.group_lcd_print2 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.group_lcd_print2,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'VAR'
                    },
                    {
                        type: 'input_value',
                        name: 'row'
                    },
                    {
                        type: 'input_value',
                        name: 'column'
                    },
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }                         
                ],
                "tooltip": "LCD打印2",
                colour:QH_LCD_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //LCD电源
    Blockly.Blocks.group_lcd_power = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.group_lcd_power,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SDISPLAY_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'VAR'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'STAT',
                        options: [[Blockly.Msg.QH_ON, "display"], [Blockly.Msg.QH_OFF, "noDisplay"], [Blockly.Msg.QH_LCD_STAT_CURSOR, "cursor"], [Blockly.Msg.QH_LCD_STAT_NOCURSOR, "noCursor"], [Blockly.Msg.QH_LCD_STAT_BLINK, "blink"], [Blockly.Msg.QH_LCD_STAT_NOBLINK, "noBlink"], [Blockly.Msg.QH_LCD_STAT_CLEAR, "clear"], [Blockly.Msg.QH_LCD_NOBACKLIGHT, "noBacklight"], [Blockly.Msg.QH_LCD_BACKLIGHT, "backlight"]]
                    }                        
                ],
                "tooltip": "LCD初始化",
                colour:QH_LCD_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //掌控屏
    Blockly.Blocks.qdp_esp32_ZKDisplay_init = {
        init: function () {
            this.jsonInit({
                message0:  '%1',
                message1:  Blockly.Msg.qdp_esp32_ZKDisplay_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PIN',
                        options: qdprobotESP32_BOTH_PIN_Output_Dropdown
                    }                        
                ],
                "tooltip": "P5接口 上传程序时不要插模块 屏上的滑动变量对应值,在“屏按键”和“屏滑动变量”前使用",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };


    //掌控屏
    Blockly.Blocks.qdp_esp32_display_START = {
        init: function () {
            this.jsonInit({
                message0:  Blockly.Msg.qdp_esp32_display_START,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                "tooltip": "P5接口 上传程序时不要插模块 屏上的滑动变量对应值,在“屏按键”和“屏滑动变量”前使用",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //掌控屏按键
    Blockly.Blocks.qdp_esp32_display_button = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_esp32_display_button,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'TEXT'
                    }                       
                ],
                "tooltip": "P5接口 上传程序时不要插模块 接收到屏上对应输入的按键设定字符值（屏发送格式为“,发送的字符.”）,\n在“启用屏接收数据”后有效",
                colour:QH_ZKP_COLOR,
                extensions: ['output_boolean']
            });
        }
    };
    //读掌控屏变量
    Blockly.Blocks.qdp_esp32_display_variable = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_display_variable,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: [["1", "1"],["2", "2"],["3", "3"],["4", "4"],["5", "5"]]
                    }                       
                ],
                "tooltip": "P5接口 上传程序时不要插模块 屏上的滑动变量对应值,在“启用屏接收数据”后有效",
                colour:QH_ZKP_COLOR,
                extensions: ['output_number']
            });
        }
    };
    //发送变量到掌控屏
    Blockly.Blocks.qdp_esp32_display_print = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_display_print,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin',
                        options: [["1", "1"],["2", "2"],["3", "3"],["4", "4"],["5", "5"]]
                    },
                    {
                        type: 'input_value',
                        name: 'N1'
                    }                          
                ],
                "tooltip": "P5接口 上传程序时不要插模块 屏上V1~V5显示变量对应值,可以为传感器值或字符串，注：重复发送要加延时间隔约300毫秒！",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //睡眠控制
    Blockly.Blocks.qdp_esp32_zkpdisplay_sleep = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_sleep,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options: [[(Blockly.Msg.QH_displaysleep1), "1"],[(Blockly.Msg.QH_displaysleep0), "0"]]
                    }                         
                ],
                "tooltip": "进入睡眠后屏关闭,退出睡眠自动开启屏显.",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //睡眠控制
    Blockly.Blocks.qdp_esp32_zkpdisplay_buzzer = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_buzzer,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options: [["NOTE_C3", "131"],["NOTE_D3", "147"],["NOTE_E3", "165"],["NOTE_F3", "175"],["NOTE_G3", "196"],["NOTE_A3", "220"],["NOTE_B3", "247"],
           ["NOTE_C4", "262"],["NOTE_D4", "294"],["NOTE_E4", "330"],["NOTE_F4", "349"],["NOTE_G4", "392"],["NOTE_A4", "440"],["NOTE_B4", "494"],
           ["NOTE_C5", "532"],["NOTE_D5", "587"],["NOTE_E5", "659"],["NOTE_F5", "698"],["NOTE_G5", "784"],["NOTE_A5", "880"],["NOTE_B5", "988"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    }                         
                ],
                "tooltip": "屏蜂鸣器的发音频率及音量大小",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //颜色
    Blockly.Blocks.qdp_esp32_zkpdisplay_color = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_color,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin1',
                        options: [["RED","63488"],["BLUE","31"],["GRAY","33840"],["BLACK","0"],["WHITE","65535"],["GREEN","2016"],["BROWN","48192"],["YELLOW","65504"]]
                    }                     
                ],
                "tooltip": "常用颜色的选择",
                colour:QH_ZKP_COLOR,
                extensions: ['output_number']
            });
        }
    };
    //颜色刷屏
    Blockly.Blocks.qdp_esp32_zkpdisplay_clscolor = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_clscolor,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'num1'
                    }                         
                ],
                "tooltip": "全屏显示一个颜色（十进制颜色号）或采用颜色定义块",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //表情刷屏
    Blockly.Blocks.qdp_esp32_zkpdisplay_pic = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_pic,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options: [[(Blockly.Msg.QH_displaypic1),"0"],[(Blockly.Msg.QH_displaypic2),"1"],[(Blockly.Msg.QH_displaypic3),"2"],[(Blockly.Msg.QH_displaypic4),"3"],[(Blockly.Msg.QH_displaypic5),"4"],[(Blockly.Msg.QH_displaypic6),"5"],[(Blockly.Msg.QH_displaypic7),"6"],[(Blockly.Msg.QH_displaypic8),"7"],[(Blockly.Msg.QH_displaypic9),"16"]]
                    }                     
                ],
                "tooltip": "内存图片全屏显示",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //页面跳转
    Blockly.Blocks.qdp_esp32_zkpdisplay_page = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_page,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options:[[(Blockly.Msg.QH_displaypage1),"1"],[(Blockly.Msg.QH_displaypage2),"2"],[(Blockly.Msg.QH_displaypage3),"3"],[(Blockly.Msg.QH_displaypage4),"4"],[(Blockly.Msg.QH_displaypage5),"5"],[(Blockly.Msg.QH_displaypage6),"6"],[(Blockly.Msg.QH_displaypage7),"10"],[(Blockly.Msg.QH_displaypage8),"8"],[(Blockly.Msg.QH_displaypage9),"19"]]
                    }                     
                ],
                "tooltip": "跳转的指定的页面",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //画圆
    Blockly.Blocks.qdp_esp32_zkpdisplay_drawinground = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_drawinground,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options:[[(Blockly.Msg.QH_displaysolidround), "cirs"],[(Blockly.Msg.QH_displayhollowround), "cir"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'num4'
                    }                     
                ],
                "tooltip": "画圆工具，在屏上显示，设置中心点(X最大320,Y最大240)及半径颜色，可选择实心或空心",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //画线矩形区域填充
    Blockly.Blocks.qdp_esp32_zkpdisplay_function1 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_function1,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pin2',
                        options:[[(Blockly.Msg.QH_displayfunction1line),"line"],[(Blockly.Msg.QH_displayfunction1draw),"draw"],[(Blockly.Msg.QH_displayfunction1fill),"fill"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'num4'
                    },
                    {
                        type: 'input_value',
                        name: 'num5'
                    }                      
                ],
                "tooltip": "画图工具，设置起点和终点/对角坐标的坐标值(X最大320,Y最大240)",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //文字信息
    Blockly.Blocks.qdp_esp32_zkpdisplay_TEXT = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_TEXT,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pinn',
                        options:[[(Blockly.Msg.QH_displaybackcolor3), "3"],[(Blockly.Msg.QH_displaybackcolor0), "0"],[(Blockly.Msg.QH_displaybackcolor1), "1"],[(Blockly.Msg.QH_displaybackcolor2), "2"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'num4'
                    },
                    {
                        type: 'input_value',
                        name: 'num5'
                    },
                    {
                        type: 'input_value',
                        name: 'num6'
                    },
                    {
                        type: 'input_value',
                        name: 'text3'
                    }                            
                ],
                "tooltip": "在屏幕上指定的区域显示文字，XY为起始点，WH是区域的长和高",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //文字信息
    Blockly.Blocks.qdp_esp32_zkpdisplay_TEXT_CN = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_TEXT_CN,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'pinn',
                        options:[[(Blockly.Msg.QH_displaybackcolor3), "3"],[(Blockly.Msg.QH_displaybackcolor0), "0"],[(Blockly.Msg.QH_displaybackcolor1), "1"],[(Blockly.Msg.QH_displaybackcolor2), "2"]]
                    },
                    {
                        type: 'input_value',
                        name: 'num1'
                    },
                    {
                        type: 'input_value',
                        name: 'num2'
                    },
                    {
                        type: 'input_value',
                        name: 'num3'
                    },
                    {
                        type: 'input_value',
                        name: 'num4'
                    },
                    {
                        type: 'input_value',
                        name: 'num5'
                    },
                    {
                        type: 'input_value',
                        name: 'num6'
                    },
                    {
                        type: 'input_value',
                        name: 'text3'
                    }                            
                ],
                "tooltip": "在屏幕上指定的区域显示文字，XY为起始点，WH是区域的长和高",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //文字信息
    Blockly.Blocks.qdp_esp32_zkpdisplay_order = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_zkpdisplay_order,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_ZKP_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'text'
                    }                         
                ],
                "tooltip": "向屏幕发送测试指令，调试工程时用",
                colour:QH_ZKP_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //Preferences储存打开命名空间
    Blockly.Blocks.QDP_Preferences_Open = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_Preferences_Open,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_STORAGE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'Name'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'model',
                        options:[[Blockly.Msg.QDP_Preferences_R_W,'false'],[Blockly.Msg.QDP_Preferences_R,'true']]
                    }                         
                ],
                "tooltip": "掉电储存.Preferences库提供的掉电存储功能\n-->文件名.用于存储所有变量的标志\n-->只读.以只读方式打开.(不能使用写指令)\n-->读/写.可读可写\n",
                colour:QH_STORAGE_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //Preferences储存读取
    Blockly.Blocks.QDP_Preferences_Read = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_Preferences_Read,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_STORAGE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'KEY'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options:QDP_Preferences_DATA_TYPE_Dropdown
                    }                        
                ],
                "tooltip": "键值内数据.如果无当前键值则会返回对应的默认值.(数值和布尔的返回0和false,float和double返回NAN)",
                colour:QH_STORAGE_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //Preferences储存写入
    Blockly.Blocks.QDP_Preferences_Write = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_Preferences_Write,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_STORAGE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'KEY'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options:QDP_Preferences_DATA_TYPE_Dropdown
                    },
                    {
                        type: 'input_value',
                        name: 'Value'
                    }                         
                ],
                "tooltip": "对对应的键值写入数据",
                colour:QH_STORAGE_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //Preferences关闭文件
    Blockly.Blocks.QDP_Preferences_Close = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_Preferences_Close,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_STORAGE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [                        
                ],
                "tooltip": "关闭文件后,不可再读写文件.",
                colour:QH_STORAGE_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //ESP一键配网
    Blockly.Blocks.QDP_esp32_smartConfig_ = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_smartConfig_,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_SMARTCONFIG_ICO,
                        width: 120,
                        height: 120
                    }
                ],
                args1: [
                                         
                ],
                "tooltip": "连接配网热点自动打开网页配置无需关注公众号，不可与网页编辑一起使用。(仅单独使用！配网热点名qdprobot，密码12345678)",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //esp配置访问点
    Blockly.Blocks.QDP_esp32_config_access_point = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_config_access_point,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'ssid'
                    },
                    {
                        type: 'input_value',
                        name: 'pwd'
                    }                               
                ],
                "tooltip": "开启AP",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //esp连接WIFI
    Blockly.Blocks.QDP_esp32_config_station = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_config_station,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'ssid'
                    },
                    {
                        type: 'input_value',
                        name: 'pwd'
                    }                               
                ],
                "tooltip": "连接WIFI",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //wifi连接状态
    Blockly.Blocks.QDP_WiFi_status = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_WiFi_status,
                args0: [
                ],
                "tooltip": "wifi连接状态",
                colour:QH_WIFI_COLOR,
                extensions: ['output_boolean']
            });
        }
    };

    //wifiIP地址
    Blockly.Blocks.QDP_esp32_wifi_IP = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_esp32_wifi_IP,
                args0: [
                ],
                "tooltip": "IP地址",
                colour:QH_WIFI_COLOR,
                extensions: ['output_boolean']
            });
        }
    };

    //wifi MAC 地址
    Blockly.Blocks.QDP32_mac_address = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP32_mac_address,
                args0: [
                ],
                "tooltip": "IP地址",
                colour:QH_WIFI_COLOR,
                extensions: ['output_boolean']
            });
        }
    };

    //配置多站点模式
    Blockly.Blocks.QDP_esp32_config_multi_station = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_config_multi_station,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'ssid'
                    },
                    {
                        type: 'input_value',
                        name: 'pwd'
                    }                               
                ],
                "tooltip": "连接WIFI",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //wifi多站点连接状态
    Blockly.Blocks.QDP_multi_status = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_multi_status,
                args0: [
                ],
                "tooltip": "IP地址",
                colour:QH_WIFI_COLOR,
                extensions: ['output_boolean']
            });
        }
    };

    //配置域名
    Blockly.Blocks.QDP_esp32_config_domaine_name_mDNS = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_config_domaine_name_mDNS,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'domaine_name'
                    }                             
                ],
                "tooltip": "配置域名",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //配置MAC
    Blockly.Blocks.qdp_ESP32_set_mac_address = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_ESP32_set_mac_address,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'input_value',
                        name: 'mac_address'
                    }                             
                ],
                "tooltip": "自定义ESP32或ESP8266的MAC地址",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

     //esp_now发送数据
    Blockly.Blocks.QDP32_esp_now_send = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP32_esp_now_send,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                      type: "input_value",
                      name: "mac"
                    },
                    {
                      type: "input_value",
                      name: "data"
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "success"
                    },
                    {
                      type: "input_statement",
                      name: "failure"
                    }  
                ],
                "tooltip": "esp_now发送数据",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

     //esp_now接收数据
    Blockly.Blocks.QDP32_esp_now_receive = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP32_esp_now_receive,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WIFI_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "success"
                    }
                ],
                "tooltip": "esp_now接收数据",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

     //获取预报天气
    Blockly.Blocks.qdpWeatherGet = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdpWeatherGet,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEATHER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "data"
                    },
                    {
                      type: "field_label_serializable",
                      name: "check",
                      "text": ""
                    }                             
                ],
                "tooltip": "输入正确的城市名（不用带“市”字)如：深圳 北京 广州，如果错误会显示'error'刷新成功则返回true\n天气接口优化注意：\n1. 接口每 8 小时更新一次，机制是  CDN  缓存 8 小时更新一次。注意：自己做缓存。\n2. 接口采用城市 ID 来精准查询请求，省份不能直接查询天气。\n3.每分钟阈值为 300 次，如果超过会禁用一天。请谨慎使用。",
                colour:QH_WIFI_COLOR,
                extensions: ['output_boolean']
            });
        }
    };

    //获取当天天气
    Blockly.Blocks.qdpWeatherGetToday = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdpWeatherGetToday,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEATHER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'type',
                        options:[[Blockly.Msg.TodayShidu ,"0"],['PM2.5', "1"],['PM1.0',"2"],[Blockly.Msg.TodayQuality,"3"],[Blockly.Msg.TodayWendu,"4"]]
                    }                             
                ],
                "tooltip": "返回对应数据 字符串型。",
                colour:QH_WIFI_COLOR,
                extensions: ['output_number']
            });
        }
    };

     //获取预报天气
    Blockly.Blocks.qdpWeatherGetForecast = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdpWeatherGetForecast,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEATHER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'type',
                        options:[[Blockly.Msg.ForecastDate ,"ForecastDate"],[Blockly.Msg.ForecastHigh, "ForecastHigh"],[Blockly.Msg.ForecastLow,"ForecastLow"],[Blockly.Msg.ForecastYmd,"ForecastYmd"],[Blockly.Msg.ForecastWeek,"ForecastWeek"],[Blockly.Msg.ForecastAqi,"ForecastAqi"],[Blockly.Msg.ForecastFx,"ForecastFx"],[Blockly.Msg.ForecastFl,"ForecastFl"],[Blockly.Msg.ForecastType,"ForecastType"]]
                    },
                    {
                      type: "input_value",
                      name: "date"
                    }
                ],
                "tooltip": "返回预报天气内容0表示当天，最大为14，字符串型。",
                colour:QH_WIFI_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //网页编辑初始化
    Blockly.Blocks.QDP_esp32_web_page_init = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_esp32_web_page_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "DO"
                    }
                ],
                "tooltip": "注：请将ArduinoJson库更新到6.8bate版本，否则不能用！\n打开ArduinoIDE/工具/库管理/ArduinoJson/选6.8bate安装",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页插入元素
    Blockly.Blocks.QDP_esp32_web_page_add = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_add,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'addType',
                        options:[
                                [Blockly.Msg.NumberCard,'NumberCard'],
                                [Blockly.Msg.HumidityCard,'HumidityCard'],
                                [Blockly.Msg.StatusCard,'StatusCard'],
                                [Blockly.Msg.ButtonCard,'ButtonCard'],
                                [Blockly.Msg.GaugeChart,'GaugeChart']
                                ]
                    },
                    {
                      type: "input_value",
                      name: "id"
                    },
                    {
                      type: "input_value",
                      name: "name"
                    }
                ],
                "tooltip": "名称支持中文",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页插入温度元素
    Blockly.Blocks.QDP_esp32_web_page_addTemperatureCard = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_addTemperatureCard,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "id"
                    },
                    {
                      type: "input_value",
                      name: "name"
                    },
                    {
                        type: 'field_dropdown',
                        name: 'type',
                        options:[['°C','0'],
                                ['°F','1'],
                                ['K','2'],
                                ['°R','3'],
                                ['°De','4'],
                                ['°N','5']]
                    }
                ],
                "tooltip": "名称支持中文",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页插入滑杆元素
    Blockly.Blocks.QDP_esp32_web_page_addSliderCard = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_addSliderCard,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "id"
                    },
                    {
                      type: "input_value",
                      name: "name"
                    },
                    {
                        type: 'field_dropdown',
                        name: 'type',
                        options:[[Blockly.Msg.QDP_ESP8266_web_page_Slider_type0,'0'],
                                [Blockly.Msg.QDP_ESP8266_web_page_Slider_type1,'1'],
                                [Blockly.Msg.QDP_ESP8266_web_page_Slider_type2,'2'],
                                [Blockly.Msg.QDP_ESP8266_web_page_Slider_type3,'3']]
                    }
                ],
                "tooltip": "名称支持中文",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页链接滑杆变化事件
    Blockly.Blocks.QDP_esp32_web_page_attachSliderChanged = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_attachSliderChanged,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [

                ],
                "tooltip": "",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页滑杆ID
    Blockly.Blocks.QDP_esp32_web_page_Slider_id = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_esp32_web_page_Slider_id,
                args0: [
                    {
                      type: "input_value",
                      name: "id"
                    }
                ],
                "tooltip": "",
                colour:QH_WEB_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //网页滑杆变化事件
    Blockly.Blocks.QDP_esp32_web_page_SliderChanged = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_esp32_web_page_SliderChanged,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "DO"
                    }
                ],
                "tooltip": "网页滑杆变化事件",
                colour:QH_WEB_COLOR,
                extensions: ['shape_hat']
            });
        }
    };

    //网页链接按钮事件
    Blockly.Blocks.QDP_esp32_web_page_attachButtonClick = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_attachButtonClick,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [

                ],
                "tooltip": "",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页按钮事件
    Blockly.Blocks.QDP_esp32_web_page_ButtonClick = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_esp32_web_page_ButtonClick,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "DO"
                    }
                ],
                "tooltip": "网页滑杆变化事件",
                colour:QH_WEB_COLOR,
                extensions: ['shape_hat']
            });
        }
    };

    //网页按钮ID
    Blockly.Blocks.QDP_esp32_web_page_Button_id = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_esp32_web_page_Button_id,
                args0: [
                    {
                      type: "input_value",
                      name: "id"
                    }
                ],
                "tooltip": "网页按钮ID",
                colour:QH_WEB_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //网页插入折线图元素
    Blockly.Blocks.QDP_esp32_web_page_addLineChart = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_addLineChart,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "id"
                    },
                    {
                      type: "input_value",
                      name: "name"
                    },
                    {
                      type: "input_value",
                      name: "x_axis_value"
                    },
                    {
                      type: "input_value",
                      name: "y_axis_name"
                    },
                    {
                      type: "input_value",
                      name: "y_axis_value"
                    }
                ],
                "tooltip": "网页插入折线图元素",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页更新折线图元素
    Blockly.Blocks.QDP_esp32_web_page_updateLineChart = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_updateLineChart,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "id"
                    },
                    {
                      type: "input_value",
                      name: "x_axis_value"
                    },
                    {
                      type: "input_value",
                      name: "y_axis_value"
                    }
                ],
                "tooltip": "网页更新折线图元素",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页更新元素
    Blockly.Blocks.QDP_esp32_web_page_update = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_esp32_web_page_update,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'updateType',
                        options:[
                                [Blockly.Msg.NumberCard,'NumberCard'],
                                [Blockly.Msg.TemperatureCard,'TemperatureCard'],
                                [Blockly.Msg.HumidityCard,'HumidityCard'],
                                [Blockly.Msg.StatusCard,'StatusCard'],
                                [Blockly.Msg.SliderCard,'SliderCard'],
                                [Blockly.Msg.GaugeChart,'GaugeChart']
                                ]
                    },
                    {
                      type: "input_value",
                      name: "id"
                    },
                    {
                      type: "input_value",
                      name: "value"
                    }
                ],
                "tooltip": "网页更新元素",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页串行打印
    Blockly.Blocks.QDP_web_print_data_32 = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_web_print_data_32,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'mode',
                        options:[[Blockly.Msg.QH_SERIAL_PRINTLN,"0"], [Blockly.Msg.QH_SERIAL_PRINT,"1"]]
                    },
                    {
                      type: "input_value",
                      name: "web_printing"
                    }
                ],
                "tooltip": "网页串行打印\n<IP Address>/webserial",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网页读取字符串
    Blockly.Blocks.QDP_web_receive_data_32 = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QDP_web_receive_data_32,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_WEB_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "data"
                    }
                ],
                "tooltip": "网页读取字符串 变量名: web_data",
                colour:QH_WEB_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网络微数据库初始化
    Blockly.Blocks.QDP_network_microdatabase_initialization = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_network_microdatabase_initialization,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_DATABASE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "ssid"
                    },
                    {
                      type: "input_value",
                      name: "pass"
                    }
                ],
                "tooltip": "网络微数据库初始化",
                colour:QH_DATABASE_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网络微数据库初始化
    Blockly.Blocks.QDP_web_microdatabase_update_tags = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_web_microdatabase_update_tags,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_DATABASE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "tag"
                    },
                    {
                      type: "input_value",
                      name: "value"
                    }
                ],
                "tooltip": "网络微数据库 更新标签",
                colour:QH_DATABASE_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网络微数据库 删除标签
    Blockly.Blocks.QDP_web_microdatabase_delete_tags = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_web_microdatabase_delete_tags,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_DATABASE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "tag"
                    }
                ],
                "tooltip": "网络微数据库 删除标签",
                colour:QH_DATABASE_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //网络微数据库 获取标签的值
    Blockly.Blocks.QDP_web_microdatabase_get_tags = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_web_microdatabase_get_tags,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_DATABASE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "tag"
                    }
                ],
                "tooltip": "网络微数据库 获取标签的值",
                colour:QH_DATABASE_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //网络微数据库 查询标签数
    Blockly.Blocks.QDP_web_microdatabase_count_tags = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.QDP_web_microdatabase_count_tags,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_DATABASE_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                ],
                "tooltip": "网络微数据库 查询标签数",
                colour:QH_DATABASE_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //注释1
    Blockly.Blocks.qdp_annotation1 = {
        init: function () {
            this.jsonInit({
                message0: '// %1',
                args0: [
                    {
                        type: 'input_value',
                        name: 'data'
                    }   
                ],
                "tooltip": "注释用无特殊意义",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //注释2
    Blockly.Blocks.qdp_annotation2 = {
        init: function () {
            this.jsonInit({
                message0: '/* %1 */',
                message1: '%1',
                args0: [
                    {
                        type: 'input_value',
                        name: 'data'
                    }   
                ],
                args1: [
                    {
                      "type": "input_statement",
                      "name": "input"
                    }
                ],
                "tooltip": "注释用无特殊意义",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

    //变量
    Blockly.Blocks.QH_variables_declare = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QH_variables_declare,
                args0: [
                    {
                        type: 'field_dropdown',
                        name: 'variables_type',
                        options:[[(Blockly.Msg.QH_global), "global_variate"],[(Blockly.Msg.QH_local), "local_variate"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options:[[Blockly.Msg.QH_MATH_INT, 'int'],[Blockly.Msg.QH_MATH_UNSIGNED_INT, 'unsigned int'],[Blockly.Msg.QH_MATH_WORD, 'word'],[Blockly.Msg.QH_MATH_LONG, 'long'],[Blockly.Msg.QH_MATH_UNSIGNED_LONG, 'unsigned long'],[Blockly.Msg.QH_MATH_FLOAT, 'float'],[Blockly.Msg.QH_MATH_DOUBLE, 'double'],[Blockly.Msg.QH_MATH_BOOLEAN, 'boolean'],[Blockly.Msg.QH_MATH_BYTE, 'byte'],[Blockly.Msg.QH_MATH_CHAR, 'char'],[Blockly.Msg.QH_MATH_UNSIGNED_CHAR, 'unsigned char'],[Blockly.Msg.QH_MATH_STRING, 'String'],["char*","char*"],["uint8_t","uint8_t"],["uint16_t","uint16_t"],["uint32_t","uint32_t"],["uint64_t","uint64_t"]]
                    },
                    {
                        type: 'input_value',
                        name: 'VAR'
                    },
                    {
                        type: 'input_value',
                        name: 'VALUE'
                    }   
                ],
                "tooltip": "创建变量",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //变量get
    Blockly.Blocks.QH_variables_get = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                args0: [
                    {
                        type: 'input_value',
                        name: 'VAR'
                    } 
                ],
                "tooltip": "获取变量",
                colour:QH_OTHER_COLOR,
                extensions: ['output_number']
            });
        }     
    };
    //变量set
    Blockly.Blocks.QH_variables_set = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QH_variables_set,
                args0: [
                    {
                        type: 'input_value',
                        name: 'VAR'
                    },
                    {
                        type: 'input_value',
                        name: 'VALUE'
                    }  
                ],
                "tooltip": "设置变量",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }     
    };
    //变量++--
    Blockly.Blocks.QH_variables_change = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QH_variables_change,
                args0: [
                    {
                        type: 'input_value',
                        name: 'VAR'
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TYPE',
                        options:[['++', '++'],['- -', '--']]
                    }
                ],
                "tooltip": "设置变量",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }     
    };

 


    Blockly.Blocks.controls_runnig_core = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.controls_runnig_core,
                message1: '%1',
                message2: 'loop',
                message3: '%1',
                lastDummyAlign4: 'RIGHT',
                args0: [
                    {
                        type: 'field_dropdown',
                        name: 'task',
                        options:[["1","1"], ["2","2"], ["3","3"], ["4","4"], ["5","5"], ["6","6"], ["7","7"], ["8","8"]]
                    }
                    ],
                args1: [{
                    type: 'input_statement',
                    name: 'setup'
                }],
                args2: [],
                args3: [{
                    type: 'input_statement',
                    name: 'loop'
                }],
                colour: QH_OTHER_COLOR,
                extensions: ['shape_hat']
            });
            this.setNextStatement(false, null);
        }
    };

    Blockly.Blocks.control_core_delay = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.control_core_delay,
                args0: [{
                    type: 'input_value',
                    name: 'sleeplength'
                }],
                colour: QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }
    };
    //算术运算符
    Blockly.Blocks.QH_arithmetic_operator = {
        init: function () {
            this.jsonInit({
                message0: '%1 %2 %3',
                args0: [
                  {
                      type: 'input_value',
                      name: 'NUM1'
                  },
                  {
                    type: 'field_dropdown',
                    name: 'OP',
                    options:[['+', '+'],['-', '-'],['*', '*'],['/', '/'],['%', '%']]
                  },
                  {
                      type: 'input_value',
                      name: 'NUM2'
                  },
                ],
                "tooltip": "算术运算符",
                colour: QH_OTHER_COLOR,
                extensions: ['output_number']
            });
        }
    };
    //关系运算符
    Blockly.Blocks.QH_relational_operator = {
        init: function () {
            this.jsonInit({
                message0: '%1 %2 %3',
                args0: [
                  {
                      type: 'input_value',
                      name: 'NUM1'
                  },
                  {
                    type: 'field_dropdown',
                    name: 'OP',
                    options:[[(Blockly.Msg.QH_EQU), '=='],[(Blockly.Msg.QH_NEQ), '!='],[(Blockly.Msg.QH_GTR), '>'],[(Blockly.Msg.QH_LSS), '<'],[(Blockly.Msg.QH_GEQ), '>='],[(Blockly.Msg.QH_LEQ), '<=']]
                  },
                  {
                      type: 'input_value',
                      name: 'NUM2'
                  },
                ],
                "tooltip": "关系运算符",
                colour: QH_OTHER_COLOR,
                extensions: ['output_boolean']
            });
        }
    };
    //位运算
    Blockly.Blocks.QH_bit_operator = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QH_bit_operator,
                args0: [
                  {
                      type: 'input_value',
                      name: 'NUM1'
                  },
                  {
                    type: 'field_dropdown',
                    name: 'OP',
                    options:[[(Blockly.Msg.QH_AND), '&'],[(Blockly.Msg.QH_OR), '|'],[(Blockly.Msg.QH_XOR), '^'],[(Blockly.Msg.QH_SHIFT_R), '>>'],[(Blockly.Msg.QH_SHIFT_L)]]
                  },
                  {
                      type: 'input_value',
                      name: 'NUM2'
                  },
                ],
                "tooltip": "关系运算符\n\'&|^\': 位运算 \n举例:A & B A变量与B变量做位 与 运算\n \'<< >>\':移位运算符\n举例:A>>4 A变量右移4位.",
                colour: QH_OTHER_COLOR,
                extensions: ['output_number']
            });
        }
    };
    //约束
    Blockly.Blocks.QH_constrain = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QH_constrain,
                args0: [
                  {
                    type: 'input_value',
                    name: 'VAR'
                  },
                  {
                      type: 'input_value',
                      name: 'MIN'
                  },
                  {
                      type: 'input_value',
                      name: 'MAX'
                  }
                ],
                "tooltip": "限制数值介于指定两个数之间",
                colour: QH_OTHER_COLOR,
                extensions: ['output_number']
            });
        }
    };
    //映射
    Blockly.Blocks.QH_map = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.QH_map,
                args0: [
                  {
                    type: 'input_value',
                    name: 'VAR'
                  },
                  {
                      type: 'input_value',
                      name: 'MIN1'
                  },
                  {
                      type: 'input_value',
                      name: 'MAX1'
                  },
                  {
                      type: 'input_value',
                      name: 'MIN2'
                  },
                  {
                      type: 'input_value',
                      name: 'MAX2'
                  }
                ],
                "tooltip": "将数值从一个区间映射到另一个区间,返回映射后的值.",
                colour: QH_OTHER_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //硬件定时器
    Blockly.Blocks.C02_controls_hw_timer = {
        init: function () {
            this.jsonInit({
                message0: Blockly.Msg.C02_controls_hw_timer,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_TIMER_ICO,
                        width: 40,
                        height: 40
                    },
                    {
                        type: 'field_dropdown',
                        name: 'TIMER_NUM',
                        options:[["0", "0"], ["1", "1"],["2", "2"], ["3", "3"]]
                    },
                    {
                      type: "input_dummy"
                    },
                    {
                      type: "input_statement",
                      name: "DO"
                    }
                ],
                "tooltip": "硬件定时器",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_hat']
            });
        }
    };

    //硬件定时器
    Blockly.Blocks.C02_controls_hw_timer_start = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.C02_controls_hw_timer_start,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_TIMER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TIMER_NUM',
                        options:[["0", "0"], ["1", "1"],["2", "2"], ["3", "3"]]
                    },
                    {
                      type: "input_value",
                      name: "TIME"
                    },
                    {
                        type: 'field_dropdown',
                        name: 'mode',
                        options:[[Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, "false"], [Blockly.Msg.MIXLY_PYTHON_PERIODIC, "true"]]
                    }
                ],
                "tooltip": "硬件定时器",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

     //硬件定时器
    Blockly.Blocks.C02_controls_hw_timer_stop = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.C02_controls_hw_timer_stop,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_TIMER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TIMER_NUM',
                        options:[["0", "0"], ["1", "1"],["2", "2"], ["3", "3"]]
                    }
                ],
                "tooltip": "硬件定时器",
                colour:QH_OTHER_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

     //NTP时间服务器
    Blockly.Blocks.NTP_server = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.NTP_server,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_TIMER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "server_add"
                    },
                    {
                      type: "input_value",
                      name: "timeZone"
                    },
                    {
                      type: "input_value",
                      name: "Interval"
                    }
                ],
                "tooltip": "NTP时间服务器",
                colour:QH_WIFI_COLOR,
                extensions: ['shape_statement']
            });
        }
    };

     //NTP时间服务器获取
    Blockly.Blocks.NTP_server_get_time = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.NTP_server_get_time,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_TIMER_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'TIME_TYPE',
                        options:[
                                [Blockly.Msg.MIXLY_YEAR, "NTP.getDateYear()"],
                                [Blockly.Msg.MIXLY_MONTH, "NTP.getDateMonth()"],
                                [Blockly.Msg.MIXLY_DAY, "NTP.getDateDay()"],
                                [Blockly.Msg.MIXLY_HOUR, "NTP.getTimeHour24()"],
                                [Blockly.Msg.MIXLY_MINUTE, "NTP.getTimeMinute()"],
                                [Blockly.Msg.MIXLY_SECOND, "NTP.getTimeSecond()"],
                                ]
                    }
                ],
                "tooltip": "NTP时间服务器",
                colour:QH_WIFI_COLOR,
                extensions: ['output_number']
            });
        }
    };

    //PS2 初始化
    Blockly.Blocks.qdp_PS2_init = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_PS2_init,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_PS2_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'PS2_DAT',
                        options:esp32_digital_pin
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PS2_CMD',
                        options:esp32_digital_pin
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PS2_SEL',
                        options:esp32_digital_pin
                    },
                    {
                        type: 'field_dropdown',
                        name: 'PS2_CLK',
                        options:esp32_digital_pin
                    },
                    {
                        type: 'field_dropdown',
                        name: 'rumble',
                        options:[[Blockly.Msg.QH_ON,"true"],[Blockly.Msg.QH_OFF,"false"]]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'pressures',
                        options:[[Blockly.Msg.QH_ON,"true"],[Blockly.Msg.QH_OFF,"false"]]
                    }
                ],
                "tooltip": "某些引脚会引起控制板重启或者不能连接的情况，请更换引脚尝试。\n不支持热拔插PS2，连接控制器请重新启动主控板。",
                colour:color_c02_serson,
                extensions: ['shape_statement']
            });

           this.setFieldValue("15","PS2_DAT");
           this.setFieldValue("2","PS2_CMD");
           this.setFieldValue("27","PS2_SEL");
           this.setFieldValue("14","PS2_CLK");
        }
    };

    //PS2 刷新数据
    Blockly.Blocks.qdp_PS2_update = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_PS2_update,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_PS2_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                      type: "input_value",
                      name: "motor1"
                    },
                    {
                      type: "input_value",
                      name: "motor2"
                    }
                ],
                "tooltip": "刷新数据,需要放置于主循环程序中,刷新数据的同时会刷新震动马达的状态(初始化时需打开[振动反馈])，可使用变量传入状态。电机1只能开关，电机2使用数值控制震动大小。",
                colour:color_c02_serson,
                extensions: ['shape_statement']
            });
        }
    };

    //PS2 按钮
    Blockly.Blocks.qdp_PS2_Button = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_PS2_Button,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_PS2_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'psbt',
                        options:[
                                ["△","PSB_GREEN"],
                                ["○","PSB_RED"],
                                ["×","PSB_BLUE"],
                                ["□","PSB_PINK"],
                                ["L-1","PSB_L1"],
                                ["L-2","PSB_L2"],
                                ["R-1","PSB_R1"],
                                ["R-2","PSB_R2"],
                                ["↑","PSB_PAD_UP"],
                                ["→","PSB_PAD_RIGHT"],
                                ["↓","PSB_PAD_DOWN"],
                                ["←","PSB_PAD_LEFT"],
                                ["SELECT","PSB_SELECT"],
                                ["START","PSB_START"]
                                ]
                    },
                    {
                        type: 'field_dropdown',
                        name: 'btstate',
                        options:[[Blockly.Msg.MIXLY_BUTTON_HOLD ,"Button"],[Blockly.Msg.MIXLY_BUTTON_PRESSED, "ButtonPressed"],[Blockly.Msg.MIXLY_BUTTON_RELEASED,"ButtonReleased"],[Blockly.Msg.MIXLY_CHANGE,"NewButtonState"]]
                    }
                ],
                "tooltip": "按住:按下时一直为真\n按下:按下瞬间为真\n松开:松开瞬间为真\n改变:按下和松开瞬间为真\n请注意：在“改变”状态下开机有可能产生信号。",
                colour:color_c02_serson,
                extensions: ['output_boolean']
            });
        }
    };

    //PS2 摇杆
    Blockly.Blocks.qdp_PS2_stk = {
        init: function () {
            this.jsonInit({
                message0: '%1',
                message1: Blockly.Msg.qdp_PS2_stk,
                args0: [
                    {
                        type: 'field_image',
                        src: QH_PS2_ICO,
                        width: 40,
                        height: 40
                    }
                ],
                args1: [
                    {
                        type: 'field_dropdown',
                        name: 'psstk',
                        options:[
                                [Blockly.Msg.PS2_RX,"PSS_RX"],
                                [Blockly.Msg.PS2_RY,"PSS_RY"],
                                [Blockly.Msg.PS2_LX,"PSS_LX"],
                                [Blockly.Msg.PS2_LY,"PSS_LY"],
                                ["△","PSAB_GREEN"],
                                ["○","PSAB_RED"],
                                ["×","PSAB_BLUE"],
                                ["□","PSAB_PINK"],
                                ["L-1","PSAB_L1"],
                                ["L-2","PSAB_L2"],
                                ["R-1","PSAB_R1"],
                                ["R-2","PSAB_R2"],
                                ["↑","PSAB_PAD_UP"],
                                ["→","PSAB_PAD_RIGHT"],
                                ["↓","PSAB_PAD_DOWN"],
                                ["←","PSAB_PAD_LEFT"]
                                ]
                    }
                ],
                "tooltip": "模拟值的读取(初始化时需打开[按压反馈])",
                colour:color_c02_serson,
                extensions: ['output_number']
            });
        }
    };

    return Blockly;
}

exports = addBlocks;


